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