Autor Thema: Readings nach FHEM schicken  (Gelesen 2355 mal)

Offline timmib

  • Developer
  • Full Member
  • ****
  • Beiträge: 157
Readings nach FHEM schicken
« am: 25 Januar 2021, 12:33:18 »
Guten Tag,

ich würde gerne einen neues FHEM Modul entwickelnm welches die neuesten Werte aus einer externen Datenbank als Reading hat.

Bei der externen Datenbank handelt es sich um InfluxDB. Dazu gehört auch Kapacitor mit dem man z.B. per MQTT und auch HTTPPost verschicken kann.

Im Moment habe ich den Eindruck, dass MQTT die beste Option ist, da FHEM out-of-the-box kein HTTP-Post unterstützt. Aktives Pollen der Datenbank kommt nicht in Frage. FHEM sollte passiv auf Änderungen warten.

Hat jemand einen Vorschlag für mich?

Viele Grüße

Tim

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 23631
Antw:Readings nach FHEM schicken
« Antwort #1 am: 25 Januar 2021, 13:03:48 »
Zitat
da FHEM out-of-the-box kein HTTP-Post unterstützt.
Das ist nicht richtig.

Offline M.Schulze

  • Commercial User
  • New Member
  • *
  • Beiträge: 42
  • Principal Strategist, Maker
Antw:Readings nach FHEM schicken
« Antwort #2 am: 25 Januar 2021, 15:28:38 »
Ich denke schon das es richtig ist.


Welchen Namen hat denn das I.O. Device ?

MfG
Home Control (HCtrl.de) - Operating Home-Automation as a Service (HAaaS)

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 23631
Antw:Readings nach FHEM schicken
« Antwort #3 am: 25 Januar 2021, 15:45:49 »
Zitat
Ich denke schon das es richtig ist.
Womoeglich haben wir unterschiedliche Auffassungen von HTTP-Post, oder was "FHEM out-of-the-box" bedeutet.

Online Otto123

  • Tester
  • Hero Member
  • ****
  • Beiträge: 17818
  • schon mal restore trainiert?
    • Otto's Technik Blog
Antw:Readings nach FHEM schicken
« Antwort #4 am: 25 Januar 2021, 16:01:19 »
Welchen Namen hat denn das I.O. Device ?
Ich würde meinen der Name spielt hierbei keine Rolle, aber in der Standardinstallation heißt der WEB ;) oder ich habe nicht verstanden was HTTP-Post ist...
Viele Grüße aus Leipzig
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7490+7412,WRT1900ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266

Offline M.Schulze

  • Commercial User
  • New Member
  • *
  • Beiträge: 42
  • Principal Strategist, Maker
Antw:Readings nach FHEM schicken
« Antwort #5 am: 25 Januar 2021, 16:20:25 »
Die Tatsache das FHEMWEB HTTP-Posts erfassen kann und Readings draus machen kann ist allenfalls ein "nice to have".

Ich rede von der Anbindung von vielen, verschiedene Geräten über das HTTP Protokoll.

Das sind Geräte die einen Webserver besitzen und auch Requests (HTTP-Posts?) auslösen können.

Als zweistufiges Modell für Module wie im Wiki beschrieben. Wo das erste Modul den Server aufbaut, das Parsen übernimmt, und die 2. Stufe z.B. nur den Query auswertet und den Input für die Response vorbereitet.
Home Control (HCtrl.de) - Operating Home-Automation as a Service (HAaaS)

Offline herrmannj

  • Global Moderator
  • Hero Member
  • ****
  • Beiträge: 5793
Antw:Readings nach FHEM schicken
« Antwort #6 am: 25 Januar 2021, 17:29:13 »
Ein Webserver löst sicher keinen request aus, das macht der Client. Bitte nicht mit Worthülsen rumwerfen. Und falls doch fehlt Bitcoin und AI für ein Bingo
smartVisu mit fronthem, einiges an HM, RFXTRX, Oregon, CUL, Homeeasy, ganz viele LED + Diverse
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 17066
  • s/fhem\.cfg/configDB/g
Antw:Readings nach FHEM schicken
« Antwort #7 am: 25 Januar 2021, 19:18:28 »
Und falls doch fehlt Bitcoin und AI für ein Bingo

und Blockchain  8)

Seit wann haben "Commercial User" eigentlich Berechtigungen im Developer Board? Muss ich wohl verpasst haben.
-----------------------
Unaufgeforderte Anfragen per email werden von mir nicht beantwortet. Dafür ist das Forum da.
-----------------------
Lesen gefährdet die Unwissenheit!
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline KölnSolar

  • Developer
  • Hero Member
  • ****
  • Beiträge: 4943
Antw:Readings nach FHEM schicken
« Antwort #8 am: 25 Januar 2021, 19:36:49 »
Möchte mit Bingo spielen. ;D

Aber zurück zum TE.
Hallo Tim,
das
Zitat
da FHEM out-of-the-box kein HTTP-Post unterstützt.
mit dem
Zitat
Aktives Pollen der Datenbank kommt nicht in Frage. FHEM sollte passiv auf Änderungen warten.
beißt sich. Bei letzterer Anforderung musst Du doch nur per DevIo eine Verbindung zu Deinem Server aufbauen. Der schickt dann die messages an FHEM. Per ReadFn wird Dein FHEM-Modul informiert und kann die message verarbeiten.
Grüße Markus
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

Offline timmib

  • Developer
  • Full Member
  • ****
  • Beiträge: 157
Antw:Readings nach FHEM schicken
« Antwort #9 am: 25 Januar 2021, 21:05:40 »
Hallo zusammen,

also eins nach dem Anderen.

  • Wenn FHEM aus HTTP POST Anfragen Readings machen kann wäre das super. Gibt es hier einen Link zur Dokumentation oder Beispielen? Ich kenne und nutze bisher nur GET auf .../fhem?cmd=...
  • Kapacitor kann auch TCP Servern JSON zuschicken. Dann wäre ein Link auf TcpServerUtils super.

FHEM sollte hier die Rolle des Servers übernehmen. Kapacitor schickt dann aktiv die Werte sobald diese in der InfluxDB eintrudeln.

Viele Grüße

Tim

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 23631
Antw:Readings nach FHEM schicken
« Antwort #10 am: 25 Januar 2021, 21:57:46 »
Zitat
Wenn FHEM aus HTTP POST Anfragen Readings machen kann wäre das super. Gibt es hier einen Link zur Dokumentation oder Beispielen? Ich kenne und nutze bisher nur GET auf .../fhem?cmd=...
Ob GET oder POST: FHEMWEB nimmt die Parameter vom URL _und_ <body>, und verarbeitet sie gleich.

Offline KölnSolar

  • Developer
  • Hero Member
  • ****
  • Beiträge: 4943
Antw:Readings nach FHEM schicken
« Antwort #11 am: 25 Januar 2021, 22:04:48 »
Zitat
Ich kenne und nutze bisher nur GET auf .../fhem?cmd=...
Das ist aber nur FHEMWEB u. nicht FHEM. FHEM besteht aus zig Servern und Clients, ein Servertyp z.B. das von Dir schon genannte MQTT. Das wäre dann der bessere Weg einen Server in FHEM zu realisieren als FHEMWEB(eigentlich nur Frontend von FHEM) vergewaltigen zu wollen.

Und irgendwie schmeißt Du die OSI-Schichten durcheinander
Zitat
2.Kapacitor kann auch TCP Servern JSON zuschicken
http u. mqtt u..... setzen auf TCP auf.

Alles meine Meinung als Halbamateur. Die wahren Experten hier sehen das möglicherweise anders.(wie Rudi bereits bestätigt hat  ;))

Grüße Markus
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

Offline timmib

  • Developer
  • Full Member
  • ****
  • Beiträge: 157
Antw:Readings nach FHEM schicken
« Antwort #12 am: 26 Januar 2021, 08:29:08 »
Guten Morgen,

@Rudi
Dann schau ich mir FHEMWEB mal an.

@Marksu
Nene, ich schmeiß da nix durcheinander. Kapacitor kann auch ohne HTTP direkt auf Socket Ebene Daten verschicken.

Zitat
Das wäre dann der bessere Weg einen Server in FHEM zu realisieren als FHEMWEB(eigentlich nur Frontend von FHEM) vergewaltigen zu wollen.
Gibt es hierzu Meinungen? Ich persönlich finde immer weniger Code ist besser als mehr Code. D.h. wenn FHEM, oder eines der out-of-the-box Module, das kann ist doch prima.

Viele Grüße

Tim

Offline timmib

  • Developer
  • Full Member
  • ****
  • Beiträge: 157
Antw:Readings nach FHEM schicken
« Antwort #13 am: 26 Januar 2021, 09:56:55 »
Ich habe jetzt mal testweise

curl -X POST -d "setreading kap x 3" http://..../fhem
gemacht. Der Befehl wird aber nicht ausgeführt. Hier der Log.
2021.01.26 08:53:48 4: Connection accepted from WEB_192.168.178.65_49832
2021.01.26 08:53:48 5: POST /fhem HTTP/1.1
Host: 192.168.178.25:8083
User-Agent: curl/7.68.0
Accept: */*
Content-Length: 19
Content-Type: application/x-www-form-urlencoded
2021.01.26 08:53:48 4: WEB_192.168.178.65_49832 POST /fhem&setreading kap x 2;; BUFLEN:0
2021.01.26 08:53:48 4: WEB: /fhem&setreading kap x 2; / RL:3551 / text/html; charset=UTF-8 /  / Cache-Control: no-cache, no-store, must-revalidate

Laut code hatte ich gehofft hier zu landen, was ja am Ende ein AnalyzeCommand bzw. AnalyzeCommandChain auslösen wird.
https://svn.fhem.de/trac/browser/trunk/fhem/FHEM/01_FHEMWEB.pm#L425

Übersehe ich hier etwas?

Viele Grüße

Tim
« Letzte Änderung: 26 Januar 2021, 10:08:54 von timmib »

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 23631
Antw:Readings nach FHEM schicken
« Antwort #14 am: 26 Januar 2021, 10:14:24 »
Etliches:
- Syntax bleibt bei GET und POST gleich, Befehle muessen mit cmd= oder cmd.XXX= spezifiziert werden.
- sinnvollerweise spezifiziert man XHR=1, damit keine Webseite zurueckgeliefert wird
- mit der Voreinstellung braucht man (zusaetzlich zum evtl. konfigurierten Passwort) das richtige(!) fwcsrf Cookie

Folgendes funktioniert bei mir:
curl -X POST -d "cmd=setreading d TEST TEST&XHR=1&fwcsrf=csrf_933865317019376" http://localhost:8083/fhem

 

decade-submarginal