berland Skrevet 29. desember 2019 Del Skrevet 29. desember 2019 6 stk Ruuvi-tag ble bestilt i julegave til meg selv, og de har ankommet og er i bruk. Sendt direkte fra produsent i Finland, kom med DHL på et par dager. https://ruuvi.com Jeg har hatt "behov" for temperaturovervåkning av kjøleskap og fryser. Ruuvi er en temperatur/fukt/trykk/akselerasjonssensor som sender status over Bluetooth Low Energy. Dette kan plukkes opp av telefoner eller andre enheter med blåtann. Ikke veldig billig, 138 euro for 6 stk. Batteritiden er estimert til 3 år, nye batterier kan kjøpes på clas. All kode er åpen, det skal gå an å bytte firmware på sensorene til å sende sjeldnere hvis man vil ha lenger batteritid. Selve målesensoren er en BME280 (Bosch) Ruuvi'ene starter å sende når de får strøm, og det kommer nye data minst hvert 15. sekund. Etter litt testing med app'en på telefonen så fant jeg eksempel-Python-kode på https://github.com/ttu/ruuvitag-sensor som jeg etter litt "apt install" og "pip3 install" fikk inn på en Raspberry Pi. OpenHAB har egen RuuviTag binding (kanskje bare i nyeste 2.5-versjon), men min OpenHAB-maskin har ikke blåtann, og det er også for mye betong mellom den lokasjone og kjøleskapene. Jeg lagde derfor en liten kodesnutt som publiserer Ruvvi-dataene på MQTT, som deretter plukkes opp av OpenHAB. (det gjenstår å finne ut om blåtannsensoren på en pi kan forwardes over nett slik jeg gjør for modbus mot ventilasjonsanlegget) 1 Siter Lenke til kommentar Del på andre sider Flere delingsvalg…
berland Skrevet 29. desember 2019 Forfatter Del Skrevet 29. desember 2019 Koden som jeg kjørende på en Raspberry PI som videresender over MQTT: import paho.mqtt.client as mqtt from ruuvitag_sensor.ruuvi_rx import RuuviTagReactive mqtt_broker = 'mqtt-server' mqtt_port = 1883 def on_mqtt_disconnect(client, userdata, rc=0): time.sleep(2) sys.exit(1) mqttclient = mqtt.Client() mqttclient.on_disconnect = on_mqtt_disconnect mqttclient.connect(mqtt_broker, mqtt_port) ruuvi_rx = RuuviTagReactive() def publish(sensordata): mac = sensordata[0] datadict = sensordata[1] # print("mac: {}, temp={}, rh={}".format(mac, datadict['temperature'], datadict['humidity'])) mqttclient.publish('ruuvi/' + mac, str(datadict)) # Process data for each sensor only every 10 second ruuvi_rx.get_subject().\ buffer_with_time(10000).\ map(lambda datas: datas[-1]).\ subscribe(lambda x: publish(x)) Item-definisjon i OpenHAB kobler blåtann-mac-adresse mot hvor sensoren står (hva den måler) og plukker også det den trenger av JSON-dataene som blir sendt: Number Sensor_Kjoleskap_temperatur "Temperatur kjøleskap" (Temperatur, Ruuvi, gResetExpire) {mqtt="<[mqtt-server:ruuvi/DA\\:10\\:13\\:C5\\:13\\:92:state:JSONPATH($.temperature):.*temperature.*]", expire="60m"} (ja, dette er legacy mqtt-binding, har ikke kommet lenger..) 3 Siter Lenke til kommentar Del på andre sider Flere delingsvalg…
Anbefalte innlegg
Bli med i samtalen
Du kan publisere innhold nå og registrere deg senere. Hvis du har en konto, logg inn nå for å poste med kontoen din.