Näytetään tekstit, joissa on tunniste lämpötilamittari. Näytä kaikki tekstit
Näytetään tekstit, joissa on tunniste lämpötilamittari. Näytä kaikki tekstit

sunnuntai 7. tammikuuta 2024

Danfoss sisälämpotilasensorin protokollan ja ThermIQ-ROOM2 toiminnallisuuden emulointi - Part 1/2

Danfoss ja Thermia pyytää jälleenmyyjästä riippuen DHP-pumppujen sisätilan lämpötilasensorista 150-250e (ja ThermIQ-ROOM2 laiteestakin saa maksaa 190e), joten otin projektiksi katsoa, että jospa saisin sen toteutettua itse koodaamalla edullisemmin ESP32-raudalla ja omalla piirilevyllä. Ja kyllähän protokolla ruutupaperin avulla lopulta avautui ja ESP32:ssa riittää tehoja yhtäaikaiseen pumpun ohjaukseen ja emuloituun lämpötila arvojen päivitykseen (ESP32 on dual core, joten pistin lämpötilalogiikan toiseen säikeeseen).

Ja pihvi, miksi haluaa pumppun ohjautuvan esimerkiksi olohuoneessa olevan bluetooth tai zigbee mqtt lämpömittarin avulla on se, että pumppu osaa lenossa säätää lämmityscurvea niin, että pysytään tavoitelämmössä. Kun esim. ennenkuin lämpömittarin otin käyttöön, niin huoneen lämpö saattoi hyppiä 20-27C:n välillä riippuen ulkolämmöstä ja käyrästä mitä joskus muistin vaihdella. Ja taas mittarin käyttöönoton jälkeen on huoneen lämpötila käytönnössä aina pysynyt puolen asteen tarkkuudella tavoitelämmöstä (itse käytän huonekertoimena nelosta, jolloin mittarin ilmoittamiin arvoihin reagoidaan nopeasti). Samalla säästyy sähköä, kun ei huonetta lämmitetä hellelukemiin.

Danfossin manuaaleissa lukee, että sensori kytketään kahdella johtimella pumpussa 303 ja 304 liittimiin. Ja jos yleismittarilla kyseiset pinnit mittaa, niin huomaa, että sieltä puskee AC:ta, joten lopullisessa toteutuksessa ESP32:sen ja pumpun liittimien logiikan väliin pitää pistää optoerotin. Mutta siis ekana protokollan ihmettely. Pistin logiikka-analysaattorin kiinni DC pinneihin, ja otin signaaleista capturet ihmeteltäväksi eri lämpötila-arvoilla. Ja ensimmäiseen muutamaan tuntiin en keksinyt mitään korrelaatiota tai logiikkaa signaaleissa, kunnes yksi kaverini sanoi, että toihan näyttää Manchester-variantilta.


Tämän pohjalta tuli sitten kaverilta eka ruutupaperiversio, joka oli pohjana protokollan selvittelyssä:

Tuon pohjalta löytyi aluksi helpot patternit kuten kolmen bitin aloitus ja kolmen bitin desimaalipilkku, jotka pysyy aina samoina. Signaalit 1=0 ja 01=1, joka muutin omassa ascii print koodissani I:ksi ja _I:ksi vähän kuvaamaan sitä miltä tolpat signaalianalysaattorissa näyttää. Ja sitten piirustelin pari ruutupaperia eri arvoja, jonka perusteella lopulta keksin tavan laskea jokaiselle lämpötila-arvolle matchaavan datan.

Ohessa vielä esimerkki capturet 20.1C ja 20.2C lämpötiloista:


Sitten tarkemmat raapustelut paperille bitti kerrallaan, jonka perusteella näkee, että viisi bittiä ennen desimaalia määrittää kokonaisluvun ja neljä bittiä pilkun jälkeen määrittää desimaalit, ja loput viisi bittiä on tarkistussumma. Dataformaatti kun rajoittaa kokonaisluvun viiteen bittiin, niin silloin max arvo mitä tuolla voi raportoida on 31.9 astetta. Sinällään ei vaikutusta normaaliin toimintaan kun tavoitelämmöt yleensä on 18-25astetta, lähinnä knoppitietona, että jos on hellettä, niin raportoitu ylälämpö pysähtyy tuonne. LSB bitti ekana vasemmalta oikealle.

Työläin osuus tuosta oli keksiä logiikka tarkistussumman laskemiseen. Viimeinen bitti oli helppo kun se meni 1:1 suurimman databitin kanssa. Mutta neljän muun bitin kanssa sai pari tuntia ruutupaperia tuijottaa, kunnes tajusi mistä biteistä otetaan xor negaatio ja mistä ei. Lopulta koodasin itselleni ESP32 toteutuksen Arduino IDE:llä, joka muodosti samanlaiset signaalit ja sen lisäksi sylki sarjaportiin debug visuaalisoinnin I ja _I merkeillä.

Sitten kun lämpötilaprotokollan logiikka oli ratkottu, niin sitten olikin aika siirtyä ESP32sen puoleen. Mulla oli jo perus Arduinolle aiemmin tehty Thermia/Danfoss I2C puolen ohjauksesta toteutus, jonka julkaisin open sourcena ( https://github.com/rainisto/arduino_i2c_orja/ ), joten otin sen pohjaksi toisen säikeen I2C logiikalle ja toiseen säikeeseen pistin uuden lämpötilasensorin gpio pinnien heiluttelu emuloinnin. Samoin koodasin MQTT logiikan vastaamaan ThermIQ-ROOM2 laitetta, jolloin pystyy hyväksikäyttämään jo olemassa olevia Home Assistant ja ThermIQ-web implementaatioita. Samoin säilytin vielä USB serial rajapinnan, joten WiFin rinnalla on edelleen tuettuna USB:n yli tiedonsiirto legacy AT-komennoilla, jos haluaa esim. USB:n yli kerätä ja visualisoida dataa esim. taloLogger-softalla.

Valitsin toteutuksen raudaksi samantyylisen WROOM32 (https://www.espressif.com/sites/default/files/documentation/esp32-wroom-32_datasheet_en.pdf) pohjaisen Lolin32 OLED näytöllisen raudan kuin ThermIQ:ssakin. Dual core helpottaa elämää, kun silloin voi lämpötilan säie elää omaa elämäänsä. ThermIQ laitteessa on setup prosessi langattoman ja salaamattoman AP:n yli, mutta itse koen sen verrattain turvattomana, joten minun toteutuksessa asetukset, kuten mqtt serverin osoite ja ssid salasana asetetaan terminaaliyhteydellä USB sarjakaapelin yli. OLED näytölle tulostetaan perustietoja kuten dhcp:lla saadun ip numeron, mqtt:n ip:n, ntp:llä haetun kellonajan jne. Jonkin verran sai ihmetellä ArduinoJson kirjaston kanssa, kun se kippasi muistivuotoon, jos timestamppia päivitti tietyllä tapaa. Mutta lopulta keksin tavan joka toimi.

Ensimmäisen toteutuksen testatasin hyppylankaversiolla, jonka jälkeen jo piirsin piirilevyn, jolloin pääsee ylimääräisistä johdoista suurimmaksi osaksi eroon (sarjaportit pitää napata suoraan WROOM32:sta). Eka levy toimi jo oikein, mutta tein siihen vielä muutamia optimointeja sekä tuen vielä optionaaliselle extra usb yhteydelle. I2C Signal lever shifterille 3V3 (ESP32) vs 5V (pumppu) käytin valmista palikkaa, joka helpottaa kolvaustyötä. Oheisessa kuvassa näkyy ekan proton hyppylankaversio ja sitten jo eka piirilevyversio.


Sitten vuorossa vielä kehikon piirtäminen 3D printteriä varten, että tuon saa nätisti kiinnitettyä ilman pelkoa oikosulusta.

Takapuolelle jätin pienen loven, jolloin esp32sen voi resetoida laiteen halutessaan ja voi halutessaan formatoida settings partition (jos haluaa asettaa ssid ja mqtt settingsit uudestaan).

maanantai 25. marraskuuta 2019

Home Assistant - Open source automaatio - Osa 4

Tykkäisin saada lämpömittareista myös mukavan näköistä käppyrää näkymään Grafanan puolelle. Joten muokkasin vähän yhtä olemassa olevaa kikkaretta joka MQTT ESP8266 onewire dallas mittareista pisti dataa eteenpäin Grafanan tietokantaan. Lisäsin koodinpätkän, joka myös kuuntelee myös homeassistant ja zigbee2mqtt mittarien MQTT jonoja.

https://github.com/rainisto/home-monitoring-grafana

Tuon MQTT bridgen avulla kaikista MQTT lämpömittareista menee data eteenpäin InfluxDB kantaan, josta grafanalla voi tehdä haluamansa näköisiä kuvaajia. Tässä esimerkkinä muutaman huoneen yhteisnäkymä:

Samalla voi configuroida Home Assisteantin hakemaan halumansa graafin HA:n desktop näkymään. Ohjeistus, jota seurasin löytyy täältä: https://community.home-assistant.io/t/complete-guide-on-setting-up-grafana-influxdb-with-home-assistant-using-official-docker-images/42860

configuration.yaml tiedostoon lisätään:

camera:
  - platform: generic
    name: Grafana Temperature
    still_image_url: 'http://192.168.1.8:3000/render/d-solo/xkTBiwMZz/home-assistant-dashboard?orgId=1&from=now-1d&to=now&panelId=4&width=1000&height=500&tz=Europe%2FHelsinki'
    username: homeassistant
    password: homeassistant
Ja ha:n rebootin jälkeen lisätään Picture Entity Card:

Ja lopulta grafana käppyrä näkyy suoraan home assistantin ruudulla, joten Grafana integraatio valmis.

keskiviikko 13. marraskuuta 2019

Home Assistant - Open source automaatio - Osa 3

Tällä kertaa vuorossa on Zigbee laitteiden lisääminen Home Assistant ympäristöön. Seurasin seuraavia ohjeita: https://www.zigbee2mqtt.io/. Flasheri ja CC2531 usb tikku antennin kanssa maksoi aliexpressistä kotiin toimitettuna alle 20e.

Tikun flashaus onnistui näppärästi myös Win10 läppärillä, kunhan ekana haki korjatun ajurin täältä.

Seuraavanlaisen conffin tein zigbee2mqtt:hen, eli enabloin homeasssistant tuen ja mqtt:n osoittamaan mqtt clusteriani (haproxy edessä).

/opt/zigbee2mqtt# more data/configuration.yaml
homeassistant: true
permit_join: true
mqtt:
  base_topic: zigbee2mqtt
  server: 'mqtt://192.168.1.4'
serial:
  port: /dev/ttyACM0
Ja sitten totuuden hetki: käynnistetään zigbee2mqtt softa raspberryssä ja painetaan Xiaomin Aqara lämpötilaanturista resettiä 5 sekunttia. Ja dadaa, consolille ilmestyi anturi, joka payloadissa näytti oikeanlaista dataakin antavan:

Ja siitä hyppäsinkin katsomaan Home Assistantin webbiä, ja sinnehän se automaattisesti olikin ilmestynyt laitteeksi.

Tämä lasten makkariin sijoitettu mittari näyttää myös ilmanpaineen ja lämpötilankin näyttää yhden desimaalin tarkemmin kuin olohuoneen BLE mittari.

Ja seuraavassa osassa vuorossa varmaan sitten Graphana tai 433Mhz laitteet Telldus mokkulan läpi tai Z-Wave (jos löydän pistokkeen kun minulla on Z-Wave palikka jossain laatikossa hukassa tällä hetkellä).

maanantai 11. marraskuuta 2019

Home Assistant - Open source automaatio - Osa 1

Kotiautomaatio projektini näyttää etenevän hitaasti, mutta nyt kun muksut ovat jo päässeet eroon vaipoista, joten nytkähti projekti taas eteenpäin.

Olin jo aikaisemmissa postauksissa pistänyt pystyyn clusteroidun MQTT:n (https://omakotikotitalomme.blogspot.com/2017/02/wifi-langaton-sahkokytkin.html), ja nyt tein periaatepäätöksen, että liitän mahdollisimman monen laitteen MQTT:n perään, jolloin voin käyttää hyvin valmiita open source palikoita ja tarvittaessa voin koodata omaa koodia, jos jotain haluamaani asiaa ei ole valmiina saatavilla. Valitsin open source lähetymistavan kun aika moni kotiautomaatiofirma on aikojen saatossa mennyt konkurssiin tai muuten vaan lopettanut toimintansa, jolloin kaupallisen purkin ostaneet ovat jääneet oman onnensa varaan.

Joten ensimmäiseksi otin rautapohjaksi Raspberry Pi 3B+:n, johon asensin pohjalla Rasbian Buster Lite -imagen (https://www.raspberrypi.org/downloads/raspbian/). Johon sitten asensin Home Assistant paketin venv ympäristöön (https://www.home-assistant.io/docs/installation/raspberry-pi/). Ja Home Assistant asennuksen sisään lisäsin vielä Home Assistant Community Storen (HACS), jolloin on helpompi ja nopeampi lisätä custom UI komponentteja ruudulle (https://hacs.netlify.com/docs/installation/manual).

Toi yllämainittu combinaatio oli itseasiassa minun toinen yritykseni, ekalla kerralla yritin asentaa hass.io raspberry distribuution, kun se olisi dockeroitu ja kaikkea muuta kivaa. Mutta tätä kirjoittaessani, kyseisessä distribuutiossa oli bugi, että se generoi giga tolkulla logitiedostoa muutamassa päivässä, joten siksi siirryin hass.io:sta tuohon venv asennukseen hacs lisäosan kanssa. Sehän voi olla, että hass.io korjaa buginsa jossain vaiheessa, joten kannattaa tarkistaa myös https://www.home-assistant.io/hassio/, jos suunnittelee uutta asennusta. Itse tykkään enemmän venv ympäristöstä kun Linux on tuttua kauraa minulle.

Tarkoitus tosiaan on liittää tähän kaikki valo-ohjaukset, lämpötilasensorit, kosteusanturit, liikkeentunnistimet, chromecast, valvontakameroiden hälyt ja lukuisat muut mokkulat (Bluetooth, Zigbee, Z-Wave ja 433HMz). Aloitan ensin kyllä ihan perusteista, että saan edes jonkun sensorin datan webbikäyttöliittymälle. Aloitin Bluetoothista, kun semmoinen on Raspberryssä jo ilman ulkoisia lisäosia. Minulla löytyy olohuoneesta Xiaomin BLE LCD lämpömittari, joten otin sen koekaniiniksi.

Netistä löytyi valmis palikka joka osaa Xiomin BLE:sta lukea arvot ja julkaista ne MQTT jonoon HA:n ymmärtämässä muodossa. https://github.com/aqualx/miflora-mqtt-daemon, jonka asennuksen jälkeen config.ini tiedostoni näytti tältä:

 [General]  
 reporting_method = homeassistant-mqtt  
 [Daemon]
 period_mitempbt = 120
 [MQTT]  
 hostname = 192.168.1.4  
 base_topic = homeassistant  
 [MiFlora]  
 [MiTempBt]
 MiBLETemp@Olohuone = 58:2D:34:33:D4:1B  

Ja käynnistin komennolla: "python3 /opt/mi-mqtt-daemon/miflora-mqtt-daemon.py", jolloin ruudulle ilmestyi:

Ja tuossa lisäsin sensorin Glance Card näkymään seuraavasti:

Ja siellähän se möllöttää, lämpötila päivittyy iloisesti sivulle. Seuraavassa osassa vuorossa Tasmota firmiksellä olevan Sonoff WIFI kytkimen HA integraatio MQTT auto discovery avulla.

lauantai 23. huhtikuuta 2016

Langaton lämpömittari paljuun

Päätin tuossa päivittää paljun langattoman lämpömittarin, kun vanha mitta oli joku kiinaihme, joka lakkasi toimimasta. Joten googlauksen tuloksena päätin hankkia Bluetoothilla toimivan mittarin, kun siihen löytyy valmiina Android ja IOS clientit. Samoin pitkän ajan tavoitteena on ehkä jollakin raspberryllä kuunnella suoraan tuota Bluetoothia.

Nopealla testailulla toimii ihan hyvin kunhan pysyy 10 metrin säteellä puhelimella. Siksi voisin jossain vaiheessa vielä virittää bluetooth raspberryn, niin voisi seurata lämpotilaa kauempaakin (vaikka kyllä toi 10m riittää ihan hyvin, ettei tarvi sisätiloista poistua lämpöä tarkistamaan).

lauantai 7. helmikuuta 2015

WLAN lämpötilamittari

Sain tuossa aikaiseksi pistää kolvin lämpiämään ja rakensin itselleni lämpötilamittarin joka langattomasti siirtää lämpötilan ja kosteusprosentin WLANin yli minun automaatiokoneelleni, joka ottaa datan vastaan, josta se voidaan sitten näyttää webissä tai vaikka puhelimessa.

Osat kokonaisuudessaan maksoivat alle 6 euroa, joten kohtuu edullinen verme siitä lopulta tuli. Eli käytin ESP-8266 (ESP-01) wlan kikkulaa joka maksoi 2.5e, DHT11 lämpötilasensori 0.8e ja virransyöttö "MB102 breadboard power module"(osaa muuntaa 5-12V:n 3.3V:ksi) 0.95e ja 220V->12V virtälähde 1.7e.

Vetäsin kuumaliimalla sensorin ja wlan kikkulan kiinni tuohon virtamoduulin alapintaan kiinni, ja sitten kolvasin asianmukaiset piuhat kiinni pinnien alapuolelle ja 4.7kΩ resistanssi datapinnin ja 3.3V VCC:n väliin (jooh, olisi ne voinut kolvata nätimminkin, mutta toimii(tm), joten riitti minulle). Pinnien yläpuolet ovat edelleen vapaat, joka mahdollistaa piirien uudelleen ohjelmoimisen ja mahdollisten ongelmien debuggauksen tietokoneella. Ja tuossa on bonuksena vielä toi valkoinen painonappi, jolla koko vehkeen voi sammuttaa ja käynnistää tarvittaessa nopeasti.

Kirjoittelin tuohon NodeMCU:lla koodinkin nopsaan, nyt se osaa liittyä automaattisesti kodin wlan verkkoon, ja se raportoi 30 sekunnin välein sensorin arvot automaatiokoneelle MQTT protokollan yli kodin wlan verkossa. Esimerkkinä mainittakoon vaikka tämä projekti http://nathan.chantrell.net/20141230/wifi-mqtt-display-with-the-esp8266/. Tuommoinen näyttö (ebay 3.8e) on itselläkin tilauksessa, mutta siitä sitten lisää kunhan se saapuu.

Tämän vehkeen on tarkoitus pöristä varastossa, niin voin koodata hälytykset, jos varaston lämpötila laskeee kohti nollaa kovilla pakkasilla. Varsin tyytyväinen olen esp8266:n toimintaan, tulen käyttämään noita erinäisissä rakenteluprojekteissa kevään mittaan...

perjantai 10. toukokuuta 2013

Raspberry Pi:llä kosteus- ja lämpötilamittari

Ebaysta taas on tipahdellut pieniä tilauksia, poimittakoon vaikka RCA-RCA male-male adaptereita 10 kipaletta, 0.37e/kipale. Näillä saa esim. Raspberry Pi:n composite out:n sukupuolen vaihdettua.

Aikaisemmassa postauksessa mainitsinkin euron maksaneesta kosteus- ja lämpötila-mittauspalikasta. Nyt minulla oli hieman aikaa testata sitä, ja täytyy todeta, että se toimii. Mukavassa 28 asteen lämmössä näitä kuvia otin. Samoin näkyy kuvassa punainen RCA-RCA palikka, jolla composite kuva nyt siirretään ja 5V sähkönsyöttö usb-hubista LCD:lle. Testin tein protolevyllä, lopullinen toteutus tietenkin kolvataan pienempään ja siistiin pakettiin. Pin1 VCC 3.3V, Pin2 Data GPIO:lle (VCC:n ja Datan väliin 4.7kOhm vastus häiriöitä syömään) ja Pin4 maahan. Sorsapuu kyseiselle testiohjelmalle löytyy täältä: http://rpidude.blogspot.fr/2012/11/temp-sensor-and-wiringpi.html