berland Skrevet 29. desember 2019 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
berland Skrevet 29. desember 2019 Forfatter 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
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.