Temperaturdaten aus REST Endpoints, Node.js oder SSH abgreifen

Begonnen von liquidxtc13, 21 Juli 2015, 13:56:54

Vorheriges Thema - Nächstes Thema

liquidxtc13

Hey Leute,

habe es lange vor gehabt und es endlich geschafft. FHEM läuft auf einem meiner Raspis.
An meinem zweiten Raspi hängt unter anderem ein DHT22 Temperatur- und Feuchtigkeitssensor dessen Daten ich mit dem zweiten Raspi wunderbar abgreifen kann. Meine Frage, wie bekomme ich die Temperaturdaten von Raspi 2 zu Raspi 1 auf dem FHEM läuft.
Ich habe mir überlegt, entweder per ssh und ausgetauschten Keys, oder ich ziehe mir die Daten über Node.js (eventuell über einem REST Endpoint). Gibt es dafür überhaupt ein Modul bzw einen einfachen Weg oder ist so ein Verhalten gar nicht vorgesehen, bzw. gewollt?

Viele Grüße
Liquid

jensb

Hallo Liquid,

willkommen im FHEM-Forum.

Da gibt es viele verschiedene Möglichkeiten. Eine ohne "Fremdsoftware" besteht darin, auch auf dem 2. RPi FHEM zu installieren und beide mit dem Modul FHEM2FHEM zu verbinden (schau dir dazu mal die Beschreibung von FHEM2FHEM in der Commandref an).

Am besten wartest du auf weitere Rückmeldungen und suchst dir hinterher die aus, die dir am besten gefällt.

LG, jensb
FHEM 6.1 - RPi 4 Raspbian 12 + PiTFT - OPi Zero Armbian 5.35
EnOcean - (W)LAN/Firmata: BMP180, TSL2561, SHT21, Heatronic 3, OBIS - WLAN/ESP8266: Gardena 1251, Zirkulationspumpe - RTL433: Oregon - Bluetooth - MQTT
Contributions: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/jensb

liquidxtc13

Hallo Jensb,

das hört sich ja schonmal gar nicht schlecht an! Allerdings frage ich mich, ob das nicht zuviel Overhead ist für den zweiten Pi, nur wegen einem Sensor und einem 434Mhz Sender?
Den Pi nutze ich nämlich eigentlich als kleine Datenbank für interne Projecte und und als git Server. Da ich noch relativ neu bei FHEM unterwegs bin, weiß ich nicht was für eine Auswirkung FHEM auf das restliche System hat.

Viele Grüße
Liquid

jensb

Hallo Liquid,

für die eigentliche Aufgabe ist eine ganze FHEM-Installation sicher etwas Overhead, zumindest in Bezug auf den benötigten Festplattenplatzbedarf. Allerdings frisst FHEM nicht viel Brot, wenn du damit nur 2 Sensoren pollst und sie an das 2. System weiterleitest. Das ganze wird nur problematisch, falls du weniger als 100 MB freien Hauptspeicher hast. Damit bekämen dann aber auch andere Anwendungen Schwierigkeiten.

Wenn du allerdings mehr den Spaß darin siehst, ein bisschen selbst zu programmieren oder mal was anderes auszuprobieren, dann könntest du z.B. auf FHEM-Seite auch MQTT verwenden, allerdings brauchst du dafür auf Sensorseite einen entsprechenden Server. Wenn du einen ESP8266 statt eines RPi hättest, würde ich nodemcu sagen. Was man beim RPi dafür nimmt, findest du wahrscheinlich mit ein bisschen Internetrecherche.

Eine weitere Möglichkeit wäre es, auf der Sensorseite, die Daten über einen Webserver verfügbar zu machen. Dann kannst du sie auf FHEM-Seite mit HTTPMOD abholen.

LG, jensb
FHEM 6.1 - RPi 4 Raspbian 12 + PiTFT - OPi Zero Armbian 5.35
EnOcean - (W)LAN/Firmata: BMP180, TSL2561, SHT21, Heatronic 3, OBIS - WLAN/ESP8266: Gardena 1251, Zirkulationspumpe - RTL433: Oregon - Bluetooth - MQTT
Contributions: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/jensb

liquidxtc13

Damit fällt dann FHEM2FHEM erst einmal raus. Sollte sich der Funktionsumfang auf der Sensorseite noch erweitern, werde ich mir das dann aber nochmal durch den Kopf gehen lassen.

Mit MQTT habe ich mich noch gar nicht auseinandergesetzt, steht aber auf der ToDo Liste  :P

Dein letzter Vorschlag geht sogar genau in die Richtung die ich gerne hätte. Ich habe vorher mal ein node.js Skript geschrieben, das mir (für den Anfang) die Temperatur und Feuchtigkeit als JSON Objekt bereitstellt. Habe auch mittlerweile ein wenig mit HTTPMOD rumgespielt, erreicht allerdings noch nicht die Ergebnisse die ich gerne hätte. Hat jemand Tipps für den Umgang mit JSON und HTTPMOD? Im Moment stöber ich sehr viel auf der Wikiseite zu Modul, aber wie gesagt, das Ergebnis das ich gerne hätte habe ich noch nicht.

Viele Grüße
Liquid

LuckyDay

pollen find ich immer doof, da brauchst du irgendeinen Zugang, zum abholen der daten

ZitatMan kann ja Fhem über Telnet bedienen und auch readings von Device darüber setzten.

ich habe als erstes in Fhem mehrere Dummy device erzeugt. z.B.

define WW_Speicher dummy
define Kessel dummy
usw.

mein script erzeugt jetzt eine datei namens telnet.txt
in der folgendes drinsteht


    setreading WW_Speicher state 55.6
    setreading Kessel state 72.0
    quit


wenn die Datei fertig erzeugt ist
rufe ich dann nur noch auf


    nc 192.168.2.113 7072 < /etc/heizung/telnet.txt


und die Datei wird über telnet geschrieben, wie wenn ich es von Hand eingegeben hätte.

Das logging und notify funktioniert dann wie ein reelles Device



liquidxtc13

Danke euch beiden für eure Antworten. Ich stelle jetzt die Temperaturdaten per Node.js in einem JSON Objekt zur Verfügung. Per HTTPMOD rufe ich die Daten über den Node-Endpoint ab und formatiere die Daten mit Sprintf.
:)

Viele Grüße
Liquid