Hei vieras, tervetuloa!

Vaikuttaa siltä että olet uusi täällä? Jos haluat osallistua keskusteluihin, rekisteröidy valitsemalla joku painikkeista ohessa!

python-cozify eli epavirallinen API toteutus

ArtanicusArtanicus Member Viestejä: 23
Aluksi linkki: https://github.com/Artanicus/python-cozify

Kun 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-temp
Tuolla saa nattia kappyraa talteen, esim Grafanan avulla tamannakoista: https://snapshot.raintank.io/dashboard/snapshot/MMa2ohY3pkp3V2JqWe2B8bIFl6J295BM


Parannettavaa 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. :-)
«1

Viestejä yhteensä

  • Pasi StåhlPasi Ståhl Member, Beta-käyttäjä Viestejä: 48
    Oma Python osaaminen on aika tarkalleen noiden yllä kerrottujen esimerkkien pohjalta tehty viritys, joka lukee lämpötilat ja kirjoittaa ne thigspeak.com:iin. Koodi on vain aavistuksen haavoittuva. Lämpömittareita ei saa poistaa, eikä niiden nimeä saa muuttaa. Koitan kuitenkin elää tuon kanssa, kunnes joskus tulevaisuudessa luen data SQL:n.
    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ä.
  • ArtanicusArtanicus Member Viestejä: 23
    Laita ihmeessä jotain kautta niin saa lisää yleispätevyyttä. Teemat kiinnostavat itseänikin joten kerro miten käy. Tavoite olisi olla helppo ja kaikenkattava joten parannettava​a riittää ja kaikki apu kelpaa.
  • ArtanicusArtanicus Member Viestejä: 23
    Uusin hub softapaivitys nostaa API versioksi 1.4. Kirjaston uusin versio 0.2.4 tuo tahan yhteensopivuuden:
    https://github.com/Artanicus/python-cozify/releases/tag/v0.2.4
  • samppasamppa Member, Cozify Viestejä: 610 mod
    Hienoa oma-aloitteisuutta :-)

    Ajattelin tehdä säännön, jolla lämpötila sensorin data lähetetään ThingSpeak palveluun.
    Olisiko sille käyttöä?

    t.Samppa / Cozify
    t. Samppa \ Cozify
  • ArtanicusArtanicus Member Viestejä: 23
    Se olisi varmasti monelle helpompi ratkaisu kuin rakentaa Pythonin päälle oma infra. Omaa tarvetta se ei olisi täyttänyt varmaan kovin kauaa mutta olenkin aina vaativa tapaus.
  • JussiSJussiS Member Viestejä: 3
    Meikäläisellä homma ei pelittänyt:

    >>> 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
  • ArtanicusArtanicus Member Viestejä: 23
    Jep, johtuu juuri siitä. En ole vielä selvittänyt/purkanut miten etäyhteys toimii. Pilvi ei autentikoi IP pyyntöä mutta ei myöskään vastaa jos pyyntö ei ole samasta verkosta.
  • ArtanicusArtanicus Member Viestejä: 23
    Nyt kun tarkemmin ajatellen niin pystyn ainakin muokkaamaan authia sen verran että IP:n voi syöttää käsin. Eli stay tuned.
  • JussiSJussiS Member Viestejä: 3
    Kiitos @Artanicus ! Jään odottamaan. Olisi mahtavaa saada toisaalla olevan hubin laitteiden tilatietoja jemmattua.

    Ja @samppa :lle myös kiitos, olisi mahtavaa saada lähettyä tietoja mainittuun palveluun. Miten tätä pääsisi betatestaamaan?

    -JussiS
  • villetakanenvilletakanen Member Viestejä: 4
    Ja sit tässä kohdin se pakollinen: onko patreon/paypal tms. tapa tukea tätä työtä.
  • ArtanicusArtanicus Member Viestejä: 23
    Olen ihan palkkatyollistetty joka tekee tata vapaa-aikana joten en usko rahan olevan pahemmin motivaattori tai edesauttaja. Paljon suurempi apu olisi bugeista, feature requesteista tai ihan vaan koodia lisaamalla avoimeen projektiin. Sitten kun paastaan tuohon laitekohtaiseen abstraktioon niin voi tulla tarve testata erinaisia laitteita mutta silloinkin mielummin siten etta joku laitteen omistava testaa kuin etta itse hankkisin ihan vain testauksen vuoksi jos k.o. laite ei muuten itsea kiinnosta. Mutta hyva kysymys, tulipahan itsekin pohdittua asiaa.

    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.
  • JussiSJussiS Member Viestejä: 3
    Artanicus kirjoitti:


    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.

    Kiitos tilannepäivityksestä @Artanicus . Annan tässä hieman painetta @samppa :lle hoitaa rajapintakuvaus saataville, ettei tarvitse reverse-engineerata ja keksiä pyörää uudelleen... ;-)

    -JussiS
  • ArtanicusArtanicus Member Viestejä: 23
    Kyllahan se edes vajaavainen rajapintakuvaus auttaisi paljon. Kaytan rajapintaa jokatapauksessa, nyt vaan on osittain arvailun ja perstuntuman varassa etta mita kutsuja uskaltaa tehda paljon ja mita vahemman. Tai parhaana esimerkkina ymmarran suunnilleen miten mitkakin avaimet kestavat ja miten ne saadaan pysymaan elinvoimaisena mutta refresh syklista en voi kuin heittaa hyvan arvauksen.

    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. :-)
  • samppasamppa Member, Cozify Viestejä: 610 mod
    @Artanicus
    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 :wink: 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
    t. Samppa \ Cozify
  • KattiKatti Member, Beta-käyttäjä Viestejä: 47
    Hei onko pilvi-accessi edistynyt? Kyselen malttamattomana kun "yleiskoneeni", josta käsin haluaisin niitä tilatietoja kysellä, ei sijaitse samassa LANissa.
Kirjaudu sisään tai Rekisteröidy kommentoidaksesi.