Tänään tuli edistettyä taas hiukan tuota tekemääni pulljson.com palvelua.
Palvelua olen lähinnä tehnyt itseäni varten jotta voin yksinkertaisissa html+css+javascript web-sovelluksissa hakea tietoja toiselta verkkosivulta. Mielestäni tämä on aika perustavan laatuinen Internet-selaimista puuttuva ominaisuus. Nykypäivänä puhuttaessa API avoimuudesta niin yleensä ensimmäiset hipsterit jotka ovat tekemässä kokeilujaan jonkun käyttämänsä palvelun parantamiseksi , useimmiten vain itselleen, törmäävät juurikin tähän ettei ko. palvelu tarjoa API:a vaan esim. oma / muu data on ’louhittava’ sivulta itse.
Louhintatyökaluja olen pulljson.com:ssa myös joitakin eritellyt mutta mainitaan tässä ehkä yleisimmät itse käyttämäni:
Työ alkaa yleensä tarkistamalla esim. Chrome-selaimen Developer Tools:n Network seuraten käyttääkö sivu itse jotain tausta palvelua API:a jota itse voisin käyttää
phantomjs (headless-tyyppinen webkit:iin perustuva selain jota ohjelmoidaan javascriptillä)
Yllä olevista vielä mainittakoon se että esim. ASP.net sovellusten login, jossa tapahtuu redirect:a session-key asettelua ja sokerina view-statea-javascripteja navigointi nappuloiden takana, tappaa kuta kuinkin kaikki ei-selain pohjaiset lähestymisyritykset wget, curl, httplib2 jne. Tällöin kohdan esim. kohtien 4 ja 5 keinoja tarvitaan, mikäli kyseessä jatkuvaa datan louhintaa. Tälläiseen törmäsimme kollegani Jounin kanssa koodatessamme hattiwatti.js ää .
Lopputulos muutaman tunnin github:n koodieditorilla pakertamisen ja epämääräisten googletusten jälkeen oli myönnettävä että ilmaiseksi ei saa ihan kaikkea. Vaan siitä pitäisi sitten maksaa esim. 8 dollaria kuussa (1. maksullinen hobby-taso) jos haluaa tuon saada herokussa toimimaan oman domainin kanssa.
No sinällään olin tyytyväinen että sain pidettyä toisen osan scrape-palvelustani toimimassa jquery/css-tyypiseen hakuun perustuva palvelu on suht. ok toiminutkin – mitä nyt lounaspori Android sovellus on ollut tovin päivittämättä eli toimimatta, joka näyttää kuta kuinkin tältä : http://santeriv.github.io/lounaspori/ (kirjoitus hetkellä Ravintola Sofia on ainoa jonka pulljson.com:n kautta tehty scrape vielä toimii).
Lisäksi olin tyytyväinen löytäessäni heroku-instansseihin keinon asentaa phantomjs jota 2. keskeneräiseksi jäänyt palveluni vaatii.
Esimerkki kutsu uudesta palvelusta, jolla voi siis hakea base64 formaatissa kuvakaappauksen selaimelta joltain sivulta – tässä kohtaa pori hacklab:n google calendar print preview sivulta:
Tämän jälkeen kun olet kopioinut leikepöydälle tämän ”kuvan” voit kokeilla katsella sitä esim. liittämällä leikepöydän sisällön selaimen osoiteriville ja painamalle enter
(toim.huom. mobilistit jompi kumpi kuitenkin tukehtuu joko selain tai leikepöydän muisti 🙂 siksi ohjeessa ”enter” eikä mitään sormella huitomis copy-paste-ohjeita tässä)
Kaikki alkoi huomiosta, tarvittiin hacklabillä salkku, minkä avulla voin helpommin kehittää tai testailla sekä rakentaa protoja ja se sisältäisi lähes kaiken tarpeellisen.
Esimerkiksi salkku sulkee sisäänsä yhdessä projektissa tarvittavat osat ja hyllylle siirrettynä toimii aikakapselina, kunnes projektiin palataan seuraavassa tapaamisessa.
Käyttökohteena tällä hetkellä seuraavat kehitysalustat
Päätettiin että pika projektin voisi rakentaa Suomiareena 2016 tapahtuman kunniaksi ständillä näytettäväksi. Aikajara oli aika kireä ja laitteisto rakennettiin osista joita löytyi hacklabin jäsenistöstä, uusia ei tilattu aikarajan vuoksi, sekä haluttiin että salkku kuvastaa pikaisesti tehtyä käytännön läheistä ”ongelma-ratkaisu” tyyliä. (myöhemmin ehkä verhoillaan hienommaksi, ehkä ei)
Must have
Salkun pitää olla kohtuullisen helppo kuljettaa paikasta toiseen, eikä sen sisällä osat saa vaurioittaa toisiaan liikkumalla toisiaan vasten.
Sähköt ulkopuolelta, kassin sisällä vain alle ~ 12 V, eikä yli sen, koska osa piireistä hajoaa jo 15V kohdalla. Powerina on hyvä käyttää läppärin latureja joista tulee 19V (+- 10%).
Nice to have
Näyttö
kaijuttimet.
useita jännitelähtöjä (+5, +12, +3.3, -5, -12, 3.3)
säädettävä jännitelähtö
säädettävä virtalähtö
Toteutus
Porin Hacklabillä Otavankatu 3:ssa viikonloppuna, silloin kun aikaa löytyy. Valmis salkku tuodaan näytille Suomiareenaan meidän ständille.
Galleria
Päivitetään heti Suomiareenan päätyttyä.
Tekijätiimi
Hämäläinen Marko Markula Atte
Kiitokset
Osien lahjoittajille Yhteisökeskukselle tilojen vapaasta käyttömahdollisuudesta
Tämän projektin tarkoitus on parantaa yubikeyn kestävyyttä, vahvistamalla sen rakennetta suojakotelolla, siten suojata sitä ulkopuolisilta kolhuilta.
FIDO U2F Security key
Ubikey on vahvan tunnistautumisen toinen komponentti, fyysinen laite mikä luo kertakäyttöavaimia. Avain on mahdollista hankkia suoraan valmistajan sivuilta, sekä Amazonin kaltaisista verkkokaupoista. Kevyellä vaivalla sen voi liittää suojaamaan mm. Gmail, Dropbox, Dashlane, and GitHub tilejä. Itse hankin FIDO U2F-avaimen, saadakseni puhelimesta riippumattoman vahvan tunnistautumisen suojaamaan Google tiliäni.
Vahvan tunnistautumisen tarkoituksena on estää tilin kaappaaminen ennalta tuntemattomasta tietokoneesta käsin, siinä tapauksessa että salasana on päässyt vuotamaan käyttäjän hallusta ulkopuolisille.
Aina uudelta koneelta sisäänkirjauduttaessa tarvitaan sekä salasana, että avain. Onnistuneen kirjautumisen jälkeen tietokone menee sallittujen listalle, eikä myöhemmin samalla tietokoneella enää tarvitse käyttää avainta.
Suojakotelon tarkoituksena on avaimen pitkän elinkaaren takaaminen. Ensin aloitetaan yksinkertaisella ja vankalla kotelolla, mutta jos rakenne vaikuttaa tukevalta, niin pintaan saattaa ilmestyä kuviointia tai muita yhdistettyjä ominaisuuksia.
Tiedostot löytää pilvestä allaolevien linkkien takaa:
Google drivessä oleva ensimmäinen hahmotelma: Draw.io piirrustus. Freecadiin hukattujen tuntien jälkeen pikainen internethakukoneen konsultointi johti kohti ”massoille suunnattua” Tinkercad 3D-suunnitteluohjelmaa. HTML-pohjainen, Autocad nimisen yrityksen katon alle rantautunut ohjelma yllätti ensikokemuksellaan positiivisesti, eikä käyttötuntumaa ja tehokkuutta voi kuin kehua.
Alle tunnissa tyhjästä luotu malli oli valmis, sekä siitä oli viety ulos .stl-muodoinen tiedosto. Tämän lisäksi malli jaettiin palvelun kautta julkisesti kaikkien käyttöön. (CC-lisenssin voi valita muutamasta vaihtoehdosta) Viimeisin mallin versio on nähtävissä täällä.
Pitkät tyhjät alueet objektin keskellä ovat riskejä, sekä avaimen suojaamisen, että tulostamisen kannalta, mutta paikalleen lukitsemisen kannalta kannalta tarpeellisia. Suojassa ollessaan ohut naru, lenkki tai metallihaka lukitsee avaimen kotelon sisään, sekä reunan lovi mahdollistaa avaimen vaivattoman poistamisen kotelosta.
Heikkoudet, sekä tulevat parannukset:
Aktivointinappula on suojan sisällä, jolloin sitä ei voi käyttää suojakotelosta käsin. Seikka on sekä hyöty, että haitta.
Pinnan tekstuurin parantaminen, suojien helpompaa erottamista varten.
Oikea tulostusasento virheiden minimoimiseksi.
Tämä artikkeli kuvaa työn alla olevaa projektia, siten sen sisältö päivittyy sitä mukaan kun projekti etenee. (2016)
Smartstore 15 laatikon koko on 40x30x19cm. Joten suunnittelin seuraavan hyllyn käyttäen 13mm huonekaluputkea, lastulevyä ja suunnittelemaani 3D printattavaa kiinnikettä. Ja tuli ostettua myös pussi valkoisia jalkatappejakin huonekaluputkille.
Käytiin sitten Jonin kanssa hakemassa Porin Puuilosta 4 kappaletta 2 metrisiä 13mm paksuja huonekaluputkia ja Porin Byggmax:sta 11x1200x2600mm lastulevyn joka ei meinannut Jonin pakuun mahtua. Käytiin sitten pikaisesti leikkaamassa levy kahteentoista osaan.
Joni oli jo aikaisemmin printannut 8 kappaletta suunnittelemiani kiinnikkeitä. Niille kävi huonosti. Olin asentamassa kahta ensimmäistä levyä testatakseni pidikkeitä. Jo asennus vaiheessa niistä viisi murtui palasiksi.
Kolme kappaletta jäi ehkäsi joten päätin, että ei onnistu noiden kanssa. Siinä sitten hetken pähkäiltyä suunnittelin toisenlaisen kiinnikkeen.
Joninopeasti printtasi minulle noita neljä kappaletta kun kävin hänen luonaan kahvilla. Sitten minun piti hakea 13mm Magnum puuterä puuilosta, että pystyin poraamaan 13mm reijät huonekaluputkille levyihin.
Porailin sen jälkeen pariin levyyn reijät, että pystyin noilla neljällä kiinnikkeellä testaamaan millain kiinnikkeet pelittää.
Loppujen lopuksi kiinnikkeet toimii hyvin. Kokeilin jopa tuon levyn päälle pistää 7 kappaletta levyjä, mutta en viitsinyt enempää niitä pistää.
Seuraavaksi Joni alkoi printtaamaan lisää pidikkeitä pienen muokkauksen kanssa. M5 muttereille 6mm reikä eikä 5mm reikä. On tuo 5mm printattu reikä vähän ahdas.
Samaan aikaan ajattelin viimein kokeilla miten alussa mainitsemani jalkatapit toimi. Tajusihan siinä hetken päästä, että ne ovat liian isoja kun putki on 13mm ja jalkatappi 13-14mm. Eihän se sinne putken sisälle mene.
Joni toi seuraavana päivänä kuusi onnistunutta kiinnike printtiä lisää ja minä tietenkin pistin seuraavan levyn kiinni. Kaksi levyä kun kiinni niin alkoi hylly seisomaan jopa omalla painollaan pystyssä. Työntämällä saa heittoa noin viis senttiä suuntaan kun katsoo putkien yläpäätä.
Pohjimmainen levy on 22 sentin korkeudessa. Toinen levy on tällä hetkellä 72 sentin korkeudessa, mutta tulee putoamaan 44 sentin korkeuteen, koska levyjen väliin tulee 22 sentin rako. P.S. Huomaa kuinka hyvin alempi kerros kestää levyjen painon.
Joni printtasikin sitten loput 22 kappaletta kiinnikkeitä kohtalaisen nopeasti.
Se tarkoitti, että pääsen rakentamaan hyllyn loppuun. Tarvii silti vielä hakea pienemmät tossut hyllyn jaloille puuilosta.
Lopputulos näytti kohtalaisen hyvältä. Ainut ongelma on, että tuo hylly heiluu kohtalaisesti vaikka pysyykin itse pystyssä. Tarvii siis seuraavassa hyllyssä miettiä ristituentaa.
Toimiva hylly kuitenkin tästä tuli ja saahan tuon seinään kiinni pistettyä, että saa heilumisen poistettua.
Näiden pienten printattavien 3D mallien teko alkaa sujumaan aika nopeasti FreeCAD:llä. Onneksi ei itsellä ole 3D printteriä. En tiedä kuinka paljon aikaa kuluttaisin kaiken piirtämiseen ja printtaamiseen.
Pori Hacklab kookoontuu edelleen vaikka omia tiloja ei ole käytettävänä tällä hetkellä.
Kahvia ja pullaa hyvin tää menee.
Vähän kaikesta tuli keskusteltua kuten Atten paikalle tuomista WiFillä toimivista releistä. Simo paikalle tuomasta softaradio tikusta. Santeri alkoi suunnitteleen uutta prototyyppiä Elisa Lompakko maksukortilleen. Joten autoin häntä vähän FreeCADin maailmaan.
Olen joskus 3D mallintanut Blenderillä, mutta se on aika raskasta. Jonilla on 210x150mm build platella varustettu 3D printteri. En nyt muista minkä valmistajan, mutta ihan siisti plug and play printteri.
Pyysin häntä tänään tekemään, mun ESP8266 + DS18B20 lämpömittarille kotelon ja ollaan jonkun verran keskustelut FreeCADin käytöstä yhden toisen projektin takia.
Aloin tuossa illalla katselemaan FreeCADin tutoriaali videoita ja ensimmäisen videon jälkeen mallintamaan vähän itsekkin. Ensimmäiseksi tein OpenBuilds OX sivulevyyn perustuvan mallin vähän pienemmässä muodossa.
Sain sen valmiiksi hetkessä. 20x80mm V-Slotille renkaiden reijät ja Nema 23 moottorille mountti ja 40x60mm akselin päädyn kiinnitykset.
Facebookissa on kaverin seinällä käynnissä keskustelu millain rakentaa halvalla kissan kiipeilyteline. Katsoin puuilon nettisivuilta minkä kokoista huonekaluputkea siellä on ja päädyin mallintamaan kiinnikkeen.
Katsotaan millain mun FreeCAD mallinnus jatkuu jossain vaiheessa.
Tässä illemmalla myös sain tietää, että Joni oli printannut tuon 13mm huonekaluputken kiinnikkeen. Tässä printtituloksesta kuvia.
Ja tässä printtauksesta timelapse.
Edit 26.2:
Jotenkin keskustelu tuosta putkikiinnikkeestä johti noin 35 euroa maksavaan Smartstore 15 laatikko hyllyyn. Joten mallinnusta tuli vähän tänäänkin tehtyä.
Edit 27.2:
Kyllä tää FreeCAD alkaa jo jonkun verran luonnistumaan. Tässä taas vähän uutta.
Ensin tein laatikon jonka tilavuus on 105x70x30mm. Sinne mahtuu esimerkiksi ESP8266 Thing ja LiPo mukavasti kun tekee vähän reikiä.
Sitten tein laatikolle tietenkin kannen. 😛
Ja kaiken kukkuraksi kuva laatikosta kannen kanssa kun kansi on kiinni. Tietenkin myös tarkistin wireframella, että kaikki menee paikoilleen. Laatikkon kansi saattaa olla vähän tiukka jos tuon printtaisi.
Saat ladattua kaikki tekemän FreeCAD mallinnukset täältä. Mielessä olis kyl paljonkin mallinnettavaa. Kuten V-Sloteille kamera mountti. 😛
Jo muutama vuosi sitten mietein kämppiksen kanssa, että olisi ihan siistiä piha saunaan rakentaa langaton lämpömittari. En silloin hirveästi elektroniikasta ollut perillä vaikka pitkään olen ohjelmointia harrastanut.
Tammikuussa tilasin huvikseni yhden Sparkfun ESP8266 Thing kehityskortin ja harmikseni huomasin, että tarvitsen myös ohjelmointi laitteen. Sparkfun suosittelee Thingin kanssa käytettäväksi SparkFun FTDI Basic Breakout korttia.
Samalla tajusin, että tuon ESP8266 kehityskortin kanssa olisi aika helppo rakentaa lämpömittari. Hacklab kaverit puhunut noista ESP8266 korteista ja DS18B20 lämpömittareista jonkun aikaa joten päätin katsoa millain tuollaisen kytkennän saisi tehtyä.
Pistin siis tilaukseen ohjelmointikortin, DS18B20 anturin ja vähän johtoa. Aloin lueskelemaan Thingin dokumentaatiota ja sitten piirsin oman kaltaisen kytkentä kaavion. Kysyin tietenkin Hämäläisen Markolta menikö kytkentä suunnitelma yhtään oikein. Hän kertoi, että se näyttää aikalailla oikealta. Ei kun siis odottamaan, että osat tulee postilaatikkoon. Harmikseni 170 euron Sparkfun tilaus jäi tulliinkin hetkeksi.
Kämppiksen vaimo vastaanotti paketin tiistaina 16.2.2016 ja minä tietenkin töihin lähtiessä otin paketin mukaan. Jonkin aikaa töitä tehdessä alkoi into kolvailuun. Sain kolvattua Arduino headerin ohjelmointikortin liittämistä varten kun minun kolvini hajosi.
Sitten juttelin hetken Markon kanssa ja tultiin siihen päätökseen, että käyn hänen luonaan pikaiseen kolvaamassa kytkennän ennen Hacklab miittiä. Kolvailu onnistui sujuvasti kun kunnon juotin. En minä pistäisi noin 300 euroa juottimeen.
Miitin jälkeen tulin kotiin. Joskus aikoinaan on tullut Arduinoa ohjelmoitua, mutta jostain syystä IDE oli koneeltani hukassa. Meni pari tuntia Arch Linuxissa, että sain tuon Arduino IDE:n asennettua. Sen jälkeen tietenkin varmistin, että ohjelman lähettäminen onnistuu pistämällä Sparkfunin sivuilta löytyvän Blink koodin pyörimään.
Jonkun aikaa koodailtuani tulin taisin saada lämmön mittaamisen toimintaan.
#include
#define ESP8266_LED 5
#define DS18B20 0
OneWire oneWire(DS18B20);
void setup()
{
pinMode(ESP8266_LED, OUTPUT);
}
void loop()
{
byte i;
byte present = 0;
byte type_s;
byte data[12];
byte addr[8];
float celsius, fahrenheit;
if (!oneWire.search(addr)) {
oneWire.reset_search();
delay(250);
return;
}
if(OneWire::crc8(addr, 7) != addr[7]) {
return;
}
Serial.println();
switch (addr[0]) {
case 0x10: // Chip = DS18S20
type_s = 1;
break;
case 0x28: // Chip = DS18B20
type_s = 0;
break;
case 0x22: // Chip = DS1822
type_s = 0;
break;
default: // Device is not a DS18 family Device
return;
}
oneWire.reset();
oneWire.select(addr);
oneWire.write(0x44, 1);
delay(1000);
present = oneWire.reset();
oneWire.select(addr);
oneWire.write(0xBE);
for (i = 0; i < 9; i++) {
data[i] = oneWire.read();
}
int16_t raw = (data[1] << 8) | data[0];
if (type_s) {
raw = raw << 3;
if (data[7] == 0x10) {
raw = (raw & 0xFFF0) + 12 - data[6];
}
} else {
byte cfg = (data[4] & 0x60);
if (cfg == 0x00) raw = raw & ~7;
else if(cfg == 0x20) raw = raw & ~3;
else if(cfg == 0x40) raw = raw & ~1;
}
celsius = (float)raw / 16.0;
fahrenheit = celsius * 1.8 + 32.0;
for(i = 0; i < (int)celsius; i++) {
digitalWrite(ESP8266_LED, HIGH);
delay(500);
digitalWrite(ESP8266_LED, LOW);
delay(500);
}
delay(2000);
}
Tuossa on siis tämän hetkinen koodipätkä jota debuggaan seuraavalla Youtube videolla.
Kirjoitan projektista tänne lisää kun saan ohjelmoitua lämpötilan lähettämisen palvelimelle. Kuten videolla sanon, en jaksa ohjelmoida juuri nyt enempää. Kello on 2:33 ja päätän tältä yöltä tämän proggiksen tähän. 😉
Edit: 24.02:
Jäänyt kirjoittamatta loput kun Hacklabin WordPress vähän sekoillut. Jos huomaatte poistin vahingossa kaikista artikkeleista kuvatkin.
Seuraava lähdekoodi pyörii itse ESP8266 Thingissä.
Jos huomaat kaikki koodi on siirtynyt setup() funktioon ESP.deepSleep() funktio kutsun takia. ESP.deepSleep on ESP8266 Thingille ominainen syväuni joka vähentää virran kulutusta. Ja lähetän Temperaturen palvelimelle HTTP GET kutsulla. NGINX palvelimella pyörii PHP seuraava PHP scripti.
Tämä PHP scripti tallentaa vastaanotetun lämpötilan JSON tiedostoon, josta voin myöhemmin lukea lämpötila arvon.
Olen vähän niputtanut DS18B20 johtoa, koska se on tällä hetkellä niin paljon tiellä. Se on pari metriä pitkä saunaa varten. Seuraavaksi tarvis tehdä tuolle kotelo ja päästään asentamaan se saunaan.
Kävin Atten kanssa äsken Yhteisökeskuksen tiedotustilaisuudessa kuuntelemassa mikä on kivitalon kohtalo. Tiedotuksesta jäi itselle muutama asia mieleen.
Korjauksesta ei ole vielä päätetty.
Ei kannata odottaa korjauksen valmistuvan tänä vuonna.
Mahdollisuus olemassa, että kivitaloa ei korjata.
Tavaroiden siirtäminen kivitalosta jäi vähän epäselväksi.
Väistötiloja ehkä tarjotaan, ainakin varastoja.
Pessimistinä tuota listaa lukiessa ajattelen, että Pori Hacklab voi alkaa etsimään uusia tiloja. Ymmärrän, että uusien tilojen etsintä kaipaa kaikilta panostusta ehkä enemmän kuin henkilökohtaisesti on tarve. Toivon kuitenkin suurella sydämmellä, että toimintamme ei tämän takia lopu tai jää vain nörttien olut kesteiksi.
Toivon Atten tiedottavan paremmin miten saamme kaiken tavaran Kivitalon tiloista. Jos ymmärsin oikein muutto laatikoita tarjoaa Yhteisökeskus ja kevät siivous on suositeltavaa joten romulava tulee paikalle. Mitä tulee tuohon epäselvyyteen tavaroiden siirtämisestä itselle. Jos kivitaloon ei saa mennä miten pääsemme huoneeseen ja varastoomme käsiksi kantaaksemme tavaramme pois?
Onko se sitten niin, että 16.2.2016 keskustelemme asiasta paremmin?