GELÖST: Einsteigerfrage HTTPMOD ( fhem goes influxdb)

Begonnen von Strike, 02 November 2016, 13:13:22

Vorheriges Thema - Nächstes Thema

Strike

Hallo zusammen,

ich arbeite an folgendem Projekt:

httpmod soll Daten von einem Gerät holen, diese dann an eine noSQL DB (influx) schicken.
Die Quelldaten werden als json geliefert und auch in die entsprechenden Readings gepackt.

define HC2 HTTPMOD http://username:geheim@192.168.2.99/api/panels/event?last=1&type=id 10
attr HC2 userattr get01Name readingsName1 readingsName2 readingsRegex1 readingsRegex2 requestHeader1 requestHeader2 set01Data set01Name set01TextArg:0,1 set01URL stateFormat
attr HC2 extractAllJSON 1
attr HC2 get01Name ID
attr HC2 group HC2


Die Readings sehen wie folgt aus:

Readings  01_deviceID 76 2016-11-02 13:09:03  01_deviceType com.fibaro.temperatureSensor 2016-11-02 13:09:03  01_id 304254 2016-11-02 13:09:03  01_newValue 20.7 2016-11-02 13:09:03  01_oldValue 20.6 2016-11-02 13:09:03  01_propertyName value 2016-11-02 13:09:03  01_timestamp 1478088546 2016-11-02 13:09:03  01_type DEVICE_PROPERTY_CHANGED 2016-11-02 13:09:03





Ich denke ich muss nun mittels
set01Data die Zielurl zusammenbasteln :


attr HC2 set01TextArg 1
attr HC2 set01URL http://192.168.2.202:8086/write?db=myhome?
attr HC2 set01Data {"HC2,id="01_id",type="01_type",timestamp="01_timestamp",deviceID=01_deviceID",deviceType="01_deviceType",propertyName="01_propertyName" newValue="01_newValue"" }


Das funktioniert aber leider nicht, die Wert der Readings werden nicht übernommen.
Was mach ich falsch? Ich wäre ueber denkansaetze und schubsen in die richtige Richtung dankbar ;-)

Vielen dank und Gruss
Stefan

StefanStrobel

Hallo Stefan,

Wenn Du außer einem einzelnen Eingabewert, der beim Set-Befehl mitgegeben wird, andere Werte aus Readings in einen HTTP-Request einbauen möchtest, dann kannst Du das mit Replacements machen.
Ohne Replacements geht HTTPMOD davon aus, dass Du einfach einen Text als Daten schicken möchtest.

Bei so vielen Werten würde ich vermutlich keine einzelnen Replacements für die Readings verwenden, sondern ein komplexeres mit einer Perl-Expression, die den String zusammenbaut.

Gruß
  Stefan

Strike

Vielen Dank, Namensvetter ;-)

Da ich a) Einsteiger und b) kaum Kenntnisse in Perl habe, werde ich erstmal mich an den Replacements versuchen,
wenn ich da nicht weiterkommen, könnte noch MQTT klappen ... mal sehen

Vielen Dank für dein Feedback

gruss
Stefan

Strike

Replacements sind ja gar nicht so schwer .....

dank deiner Unterstützung habe ich es hinbekommen, wenn ich nun einen Wert  in die fhem Zeile tippere, wird der HTTPMOD ausgeführt und meine influxDB mit Daten gefüllt. Soweit so gut.
Wie bekomme ich das aber nun hin, das das automatisch passiert wenn sich ein Reading ändert?

gruss
Stefan

Strike

Ich habe es nun mit einem notify und einem event on change reading geschafft

alle relevanten Werte werden nun in eine enfluxDB gepumpt.

danke für euren Support!

gruss
Stefan