Gå til innhold
  • Bli medlem
Støtt hjemmeautomasjon.no!

Ruuvi


berland

Anbefalte innlegg

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)

 

ruuvitag.jpg

  • Like 1
Lenke til kommentar
Del på andre sider

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..)

  • Like 3
Lenke til kommentar
Del på andre sider

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.

Gjest
Skriv svar til emnet...

×   Du har limt inn tekst med formatering.   Lim inn uten formatering i stedet

  Du kan kun bruke opp til 75 smilefjes.

×   Lenken din har blitt bygget inn på siden automatisk.   Vis som en ordinær lenke i stedet

×   Tidligere tekst har blitt gjenopprettet.   Tøm tekstverktøy

×   Du kan ikke lime inn bilder direkte. Last opp eller legg inn bilder fra URL.

×
×
  • Opprett ny...

Viktig informasjon

Vi har plassert informasjonskapsler/cookies på din enhet for å gjøre denne siden bedre. Du kan justere dine innstillinger for informasjonskapsler, ellers vil vi anta at dette er ok for deg.