Aluksi linkki:
https://github.com/Artanicus/python-cozifyKun sita kuuluisaa APIa on nyt hyva kotva odoteltu niin meni niinsanotusti hermo ja toteutin senverran rajapintaa kuin siita jo tiedetaan. Suuri kiitos siis Mika Kolarille pohjatyosta! (
https://bitbucket.org/mikakolari/cozify)Oli ylimaaraista aikaa ja halusin viimein Proove Multisensoreista datan talteen joten kirjoitin pienen Python kikkareen joka noukki datan ja tallensi InfluxDB puolelle. Idea jatkoi jalostumistaan ja on nyt siina pisteessa etta kehtaa mesota laajemmin.
Eli, python-cozify on MIT lisensoitu avoimen lahdekoodin Python kirjasto joka hoitaa autentikoinnin Cozify pilven kanssa ja antaa yksinkertaisen metodin noukkia laitteista dataa. Toistaiseksi siis read-only. (koodia ja pyyntoja otetaan vastaan!)
Yksinkertainen esimerkkiohjelma tuota kayttaen joka noukkii Multisensor dataa ja tuuppaa talteen InfluxDB aikasarjaan:
https://github.com/Artanicus/cozify-tempTuolla saa nattia kappyraa talteen, esim Grafanan avulla tamannakoista:
https://snapshot.raintank.io/dashboard/snapshot/MMa2ohY3pkp3V2JqWe2B8bIFl6J295BMParannettavaa on paljon ja yksi ihminen ei mitenkaan pysty kaikkea toteuttamaan koska ei omista kaikkia laitteita. Eli nyt Python taitajat nurkista esiin ja pull requesteja tulemaan. :-)
Viestejä yhteensä
Eli jätän toistaiseksi pull requestit väliin.
Yritin aluksi siirtää lämpötilat ihan kylmästi siinä järjestyksessä, kun hubi ne lähetti. Tämä järjestys kuitenkin muuttuu, jos hubin laitteita lisätään tai poistetaan. Siksi siirto on nyt kytketty lämpömittareiden nimiin.
Voin kyllä tarvittaessa lähettää sen datan, jota minulta löytyvät laitteet lähettävät.
Seuraavan kerran, kun minulla on aikaa tutustua tuohon Pythoniin, koitan koodailla pätkän, joka tarkistaa temojen tilan ja muuttaa niitä.
Näin saisin tehtyä teeman, joka aktivoituessaan sammuttaa halutut teemat. Kun ei sitä kaivattua sammuta teema laitteesta/teemasta ominaisuutta ole vielä tullut. (Vai onko?)
Teemojen tilat saa jo luettua, eli pitää varmaan vain lähettää "IsOn": false käskyjä.
https://github.com/Artanicus/python-cozify/releases/tag/v0.2.4
Ajattelin tehdä säännön, jolla lämpötila sensorin data lähetetään ThingSpeak palveluun.
Olisiko sille käyttöä?
t.Samppa / Cozify
>>> cloud.authenticate()
Enter your Cozify account email address: xxx
OTP from your email: xxx
Traceback (most recent call last):
File "", line 1, in
cloud.authenticate()
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/cozify/cloud.py", line 45, in authenticate
raise Exception('No LAN ip returned, is your hub registered?')
Exception: No LAN ip returned, is your hub registered?
>>>
Mahtaako vaikuttaa, hubi ei ole samassa LANissa...(?)
-Jussi
Ja @samppa :lle myös kiitos, olisi mahtavaa saada lähettyä tietoja mainittuun palveluun. Miten tätä pääsisi betatestaamaan?
-JussiS
JussiS:lle senverran tilannetietoa etta aikaisemmista rakennevalinnoista johtuen tuo "purkkakorjaus" mita ajattelin ei onnistu joten aloin sensijaan toteuttamaan sita ihan kunnollista pilvi-relay tukea. Ymmarran jo miten se toimii ja rakenteet melkein valmiit. Haasteena siis integroida se rajapintaan siten etta koodissa tarvitsee mahdollisimman vahan ottaa huomioon ollaanko etana vaiko ei.
-JussiS
Eli toisinsanoen, julkaisi sita tai ei, sita kaytetaan jokatapauksessa. Nyt on vaan arvailujen varassa etta ei aiheuteta ylimaaraista kuormaa tyhmilla kutsuilla kun taas ohjeiden kera olisi edes joku ohjenuora mita kannattaa tehda ja mita ei. :-)
Rajapintakuvauksen julkaiseminen pitäisi tehdä ainakin aluksi varoituksella, että se saattaa muuttua varoittamatta, koska sen jäädyttäminen ja takaisinpäin yhteensopivuuden varmistaminen vaatisi ylimääräisiä resursseja.
Tuon sanottua, voisin aivan hyvin lähettää sen esimerkiksi joillekin valituille kehittäjille - vaikka sitten ensin sinulle Varmistan vain ensin, että tarvitseeko meidän tehdä NDA. Onko se sinulle ok?
Laita minulle sähköpostia niin jatketaan keskustelua siellä: samppa (at) cozify.fi
t. Samppa / Cozify
https://pypi.python.org/pypi/cozify/0.2.5
Pilvipuolen kayttoonotto ei ole paljoa edennyt omien kiireiden vuoksi (lue: kesa) mutta hitaasti kuitenkin pala kerrallaan. 0.2.x sarja pitaa kirjaston nyt toimintakuntoisena, 0.3.x haarassa sitten tulee noita uusia ominaisuuksia! Ja olen hyvin avoin jos joku haluaa ottaa jotain sarkaa tyostaakseen, autan mielellani alkuun. :-)
https://github.com/Artanicus/python-cozify/tree/cloud-remote
Omissa testeissa toimii, jos ei niin mulle vaikka privana tests/hub/tz.py output niin katotaan mika sita risoo. Tai sitten vaan suoraan GitHubiin kommentoimaan: https://github.com/Artanicus/python-cozify/issues/9
Jos haluaa tarkempaa kontrollia onko yhteys paikallinen vai eta, voi yhteystyypin maaritella myos manuaalisesti;
http://python-cozify.readthedocs.io/en/latest/hub.html#cozify.hub.remote
Toimii varmaan kaikissa Linuxeissa, minulla on Lubuntu 18.04 lts ja komennot ajoin root-käyttäjänä.
#############################################
apt install python3-pip
pip3 install cozify pytz
apt install influxdb influxdb-client
influx -execute 'CREATE DATABASE cozify'
cd /omat/ohjelmia
git clone https://github.com/Artanicus/cozify-temp.git
cd cozify-temp
lisää tiedosto auth.py ja siihen nämä kolme riviä
#!/usr/bin/env python3
from cozify import cloud, config
cloud.authenticate()
chmod +x auth.py
./auth.py
ohjelma kysyy hubiin kirjautumissähköpostin ja tallettaa hubin avaustiedot tiedostoon "~/.config/python-cozify
./cozify-single-sample.py
hakee itsellä nämä tiedot:
[1569756854253] 2019-09-29 14:34:14.253000+03:00: DeveLiike autotalli, 11.68 C, None %H
[1569756378935] 2019-09-29 14:26:18.935000+03:00: Philips Liike YT, 19.92 C, None %H
[1569756852039] 2019-09-29 14:34:12.039000+03:00: Kasvih sisäl, 21.3 C, 82.0 %H
[1569756857035] 2019-09-29 14:34:17.035000+03:00: Kasvih ulkol, 20.1 C, None %H
[1569756650993] 2019-09-29 14:30:50.993000+03:00: Develco Vuotovahti, 19.0 C, None %H
[1569756600538] 2019-09-29 14:30:00.538000+03:00: Philips ulko liike, 12.15 C, None %H
[1569756814233] 2019-09-29 14:33:34.233000+03:00: Komposti, 48.1 C, None %H
[1569756754233] 2019-09-29 14:32:34.233000+03:00: Kompostilla, 11.4 C, 86.0 %H
[1569756847068] 2019-09-29 14:34:07.068000+03:00: Keittiö, 22.8 C, 49.0 %H
[1569756850240] 2019-09-29 14:34:10.240000+03:00: Yläpakastin, -18.7 C, None %H
[1569756787067] 2019-09-29 14:33:07.067000+03:00: Keittiöpakast, -19.0 C, None %H
[1569756790230] 2019-09-29 14:33:10.230000+03:00: Ylätasanne, 23.2 C, 48.0 %H
./cozify-sample-loop.py
hakee tietoja hubista ja tellettaa ne influx-tietokantaan minuutin välein:
writing to InfluxDB...
write(12) successful!
writing to InfluxDB...
write(12) successful!
writing to InfluxDB...
cntrl+c
influx
>use cozify
>SELECT * FROM "multisensor"
name: multisensor
time humidity name temperature
---- -------- ---- -----------
1569756378935000064 Philips Liike YT 19.92
1569756600538000128 Philips ulko liike 12.15
1569756650992999936 Develco Vuotovahti 19
1569756754232999936 86 Kompostilla 11.4
1569756787066999808 Keittiöpakast -19
1569756790230000128 48 Ylätasanne 23.2
1569756814232999936 Komposti 48.1
1569756847068000000 49 Keittiö 22.8
1569756850240000000 Yläpakastin -18.7
1569756852039000064 82 Kasvih sisäl 21.3
1569756854252999936 DeveLiike autotalli 11.68
1569756857035000064 Kasvih ulkol 20.1
1569756874250999808 86 Kompostilla 11.5
1569756900432000000 Philips ulko liike 12.15
1569756907055000064 Keittiöpakast -19.3
jne.
>exit
#########################################################################3
Hengissä on ja juttelee uusimman APIn kanssa. Itselläni jatkuvassa ajossa joten yleensä päivän sisään saan päivityksen ulos jos API versio päivittyy ja unit testit varmistaa että toiminnallisuus säilyy.
Kehitys ollut hidasta kun ei tämä mikään primääriprojekti aina ole mutta jos tiedät mitä tarvitset lisää niin helpompi puskea kohti tavoitetta.