Tarve: Cozifyssä näkyvissä olevien lämpötilojen loggaaminen säännöllisesti Thingspeak- tms. palveluun.
Minulla on isohko patterilämmitteinen talo ja siellä lämmityksenohjausautomaatiota. Sitähän tekee mieli tietysti viritellä ja koittaa hakea koko ajan parempaa optimointia, jos ei nyt isojen säästöjen toivossa, niin ainakin harrastuksen vuoksi. Lämmityksen ohjaus itsessään on Danfossin lämmityksenohjausautomaatio (Danfoss Link), mutta sekään ei pysty tallentamaan mitään historiatietoa.
Ensimmäinen käyttötapaus on tietysti huoneiden lämpötilojen loggaus ajan yli. Olisi mukava nähdä miten työpäivän aikana ja yöllä lämpötilat putoavat missäkin huoneessa ja miten nopeasti taas takaisin.
Lisäksi, maalämmön kanssa olisi kiva seurailla lämpötiloja eri putkissa ja vähän yrittää ymmärtää miten se systeemi toimii eri tilanteissa tarkemmin. Vähimmillään putket maalämpöyksiköltä puskurivaraajaan ja ne varsinaiset lämmityskierron meno- ja paluuputket puskurivaraajalta kiertoon. Jos tälläinen loggaus olisi, niin ei tarvittaisi kuin läjä Prooven lämpömittareita Cozifyyn kiinni. Parhaiten tähän käyttötapaukseen sopinee jääkaappianturi, koska siinä anturielementti on johdon päässä ja sen voisi vetää putken kylkeen kiinni eristeen sisään, jolloin mittaustarkkuus olisi hyvä. Ainoa rajoittava tekijä on tosin se, että noita Prooven antureita saa asennettua vain 8, koska ne voivat lähettää vain 8 eri kanavalla.
Tästähän voisitte tehdä hyvän paketin kauppaanne vaikka 4 kpl noita Prooven laitteita ja eristeteippiä (esim. solukumiteippi) antureiden paketoimiseksi putken ympärillle
Lopuksi, mielestäni tämä on palvelu, josta olisin valmis maksamaan hieman. En nyt sentään kymppiä kuussa, mutta helposti euron-pari. Tosin otan toiminnallisuuden ilolla myös vastaan ilmaisena
Viestejä yhteensä
Samalla voisi liiketunnistimien ja ovi-/ikkuna-antureiden tilamuutokset saada talteen johonkin.
Oliko tätä joku jo enemmän pyöritellyt Cozifyn päässä?
En ole thingspeakkia kayttanyt mutta nayttaisi loytyvan sillekkin puolelle valmis kirjasto: https://pypi.python.org/pypi/thingspeak/
Jos nyt intoudun ja ehdin niin voisin toki vasata myos suoraan tuonne syottavan esimerkin, jos ei ehdi joku toinen ensin. :-)
Yksi channel sisältää 8 fieldiä. Nettiliittymä piirtää jokaisesta fieldistä oman kaavion. Siksi päädyin käyttämään sitä noin. Nyt näkee aina 8:n laitteen kuvaajat kerrallaan. Jokaisen fieldin olen nimennyt laitteen mukaan.
Voisi tietysti tehdä jokaiselle laitteelle oman chanelin ja tellentaa sitten noihin fieldeihin lämpötilan, kosteuden ja muut laitteen kertomat arvot.
Käytän kännykässä widgettiä, joka tuo osan lämpötiloista suoraan aloitusnäyttöön. Sekin hakee 2 fieldiä/channel. Pidin mukavana, että saa aina 2:n laitteen lukemat yhteen widgetruutuun, koska kosteuksien seurantaa en kännykkään kaivannut. Lähinnä kiinnostaa ulkolämpötila, patterikierron lämpö ja kaljakaapin lämpötila.
http://i64.tinypic.com/2zssot3.jpg
Ohjelma kyselee ensin arvot Cozifysta ja sitten lähettää ne Thingspeakiin. Tämä toistetaan 5 min välein.
Cozify osuus on tehty pitkälti tältä foorumilta löytyneiden ohjeiden mukaan.
Thingspeak osuus taas tehty thingspeakin sivuilta löytyvää esimerkkiä muokkaamalla. Toteutus on hieman huonohko, koska joudun koodaamaan aina uudestaan, jos lisään laitteita joiden dataa haluan tallentaa. Tai muutan laitteiden nimiä.
Ja varmennetta taidan käyttää jotenkin väärin, koska se vanhenee aina säännöllisesti.
Tarkoitus olisi tehdä ohjelma uudestaan niin, että data tallennettaisiin tietokantaan. Silloin ohjelma voisi paremmin mukautua lisääntyneisiin laitteisiin tai muuttuneisiin nimiin. Tuntuu vain, että ikinä ei löydy aikaa toteuttaa tätä.
Tarkoitus olisi tosiaan käyttää webbihotellin tietokantaa. Ja ajattelin rakentaa koodit artanicuksen rajapintakoodeilla.
Mun koodailut on aina vähän kokeellisia ja kehitystyö loppuu siihen, kun se toimii. Tämäkin oli ensimmäinen python ohjelmani.
Kokeilin hieman noita artanicuksen koodeja ja niillä pääsisin eroon siitä varmenteen onkimisesta nettiselaimella. Samalla jos opettelisi datan tallentamisen sinne webhotellin tietokantaan, niin sittenhän Cozifyyn tuleekin thingspeak-loggaus.
Btw. Ite oon pienille kokeiluille käyttänyt gitbucketia, saa priva-repoja ilmaiseksi.
Julkaisen nyt oman palikkani Thingspeakin kapalointiin joka tavallaan toimii mutta ei osaa useampaa mittaria kerrallaan:
https://github.com/Artanicus/cozify-temp/blob/master/cozify-thingspeak-loop.py
Tuotti testeissani tollasen tuloksen: https://thingspeak.com/channels/430665
Käytännössä Thingspeakissa on rajoitus, jossa upload -kutsuja saa tulla 15s välein. Tossa esimerkkikoodissa lähetetään vain 1 anturin data kerrallaan enkä jaksanut alkaa perkaamaan thingspeak -modulin sielunelämää vielä niin laitoin datan menemään anturi kerrallaan 15s välein palveluun.
Eli ruma kuin mikä mutta toimii.
Peilissäkin alkaa tietoja näkymään, siitä kuva kunhan saan napattua.
- petri
Tämä oli ehkä paras uudistus pitkään aikaan ja oikeestaan koko uusimman päivityksen käyttökelpoisin.
t. Samppa \ Cozify
Cozifyyn voisin lisätä myös laitteen ja teeman tilan raportoinnin ThingSpeakiin että sen voi lisätä graafeihin merkkaamaan noita tapahtumia.
t. Samppa / Cozify
Johtuuko tämä siitä, että ilmaista kanavaa saa päivittää vain 15 s välein? Käytännössä arvatenkin Develcon päivittäessä nuo molemmat ne lähtevät tasan samalla hetkellä Thingspeakiin ja se joka sattuu tulemaan vähän jäljessä jää aina pois, koska on sen 15 s sisällä.
Miten tämän voi kiertää?
Eikö oikeastaan Cozifyssä pitäisi olla tuolle Develcolle vain yksi sääntö, jossa voisi antaa kanavat kosteudelle ja lämpötilalle ja ne lähtisivät sitten samassa viestissä Thingspeakille?
EDIT: Tajusinkin nyt, että se 15 s raja on kanavakohtainen. Ratkaisu siis on, että sen saman Develcon kosteus ja lämpötila pitää ohjata eri kanaville.
Useamman mittauksen lähettäminen samasta säännöstä on tällä hetkellä teknisesti haastavaa, sillä laitteet eivät välttämättä aina ole samassa deterministisessä järjestyksessä, ja siksi mittarit ja field ID:t on hankala pitää aina samoina. Eli käytännössä säännön luomisessa pitäisi pystyä määrittelemään kullekkin laitteelle se field ID, mutta UI ei vielä tue sellaista konseptia.
Useammalla säännöllä asian saa kuitenkin luotettavasti toimimaan.
t.Samppa \ Cozify
Todella kätevä lisäys Cozifyn palveluun.
Seuraavaksi ajattelin opetella kuinka muokata twitter -hälytystä uusiksi ja lisätä pidemmän ajanjakson trendinäytön.
Voin yrittää tehdä bulk datan siirron kerran minuutissa ja katsoa saisiko sen avulla suuremman datamäärän läpi.
Jos se ei auta, niin dataa on alettava keskiarvoistamaan ja lähetämään harvemmin.
t. Samppa
1) Keskitetty puskurointi
Joku puskurointi voisi toimia, eli kanavakohtaisesti lähtevät signaalit menee puskuriin ja ne lähtevät sieltä 15 s välein. Ongelmaksi jää tilanne, jossa puskuroituu liikaa lähetyksiä, jolloin vanhimmat on vaan pakko heittää roskiin. Esim. vanhemmat kuin 30 s.
Ja siis Thingspeakissahan on se Home-lisenssi, jolla saa lyhennettyä odotusajan 1 sekuntiin. Tällöin puskurointi toimisi hyvin esim. 2 s puskuroinnilla.
2) Sämpläys
Toinen mahdollinen ajatus voisi olla raaka random-sämpläys. Eli thingspeak-säännölle sämpläysparametri. Vaikka prosentteina. Jos asettaa prosentin 50%, niin sääntö arpoo lähetyshetkellä random-luvun 0-1. Jos random luku on alle 50%, niin lähetys lähetetään Thingspeakille. Muutoin ei. Tämäkin jättää edelleen sen ongelma, että randomilla saman laitteen eri säännöt voivat yrittää lähettää samaan aikaan ja toinen jää pois.
3) Säännön odotusaika
Oisko yksinkertaisin kuitenkin sitten se, että tuolle thingspeak-säännölle asettaisi odotusajan. Esim. jos asettaa 20 s, niin se odottelee anturin lukuhetkestä 20 s ennenkuin lähettää sen Thingspeakiin. Tässä ongelmaksi jää se, että jos käyttäjä asettaa suuremman odotusajan kuin anturin päivitysväli. Tämän ehkä voisi hanskata sillä, että jos anturilta tulee päivitys, ja odotuksessa on vielä joku edellinen päivitys, niin se uusi päivitys jätetään huomiotta ja odotuksessa oleva lähtee sitten kun lähtee.
Tätä voisi siis käyttää niin, että anturin kosteudelle laittaisi odotusajan 0 s ja lämpötilalle 20 s, jos ne haluaa siis samaan kanavaan.
YHTEENVETONA
Jos tosissaan halutaan, että Cozifystä voi kerätä luotettavasti kanavan 8 eri kenttään dataa, niin näkisin, että tuo keskiketty puskurointi olisi toimivin vaihtoehto yhdistettynä Home-lisenssiin Thingspeakissa (1 s jäähdyttelyaika).
Vaihtoehdoissa 2 ja 3 tullaan kuitenkin helposti tilanteeseen, että dataa yrittää lähteä jäähdyttelyajan sisällä. Vähemmän tietysti, jos käytössä Home-lisenssi Thingspeakissa.
Mutta, ylipäätään en näe, että tässä on kovin isosta ongelmasta kysymys, koska jäähdyttelyaika on kanavakohtainen. Tämä on siis kierrettävissä aina sillä, että jaetaan kaikki datat eri kanaviin. Tällöin voivat lähteä vaikka ihan yhtäaikaa.
Myös hieman ajattelin että eihän ongelma tässä tapauksessa olisi kanssa se että nyt molemmat lämpötilat tulee samalta kanavalta cozifylle ja varmaankin samaan aikaan jolloin arvoja yritetään lähettää samaan aikaan eteenpäin?
Kokeilen vielä tuota bulk lähetystä josko se ratkaisisi koko ongelman..
t. Samppa \ Cozify
Muutoksen myötä käyttäjän pitää määritellä asetuksiin ThingSpeak palvelun channel numero, eli asentaminen on hieman hankalampaa (toinen copy-paste). Lisäksi, jo olemassa olevat loggaus-säännöt eivät enää toimi, vaan ne pitää luoda uudelleen (ja määrittää tuo channel numero). Tuo on toki harmillista ominaisuutta testanneille käyttäjille.
t. Samppa \ Cozfiy