Temperatur, Luftfeuchte, Status von FHEM auf KNX senden

Begonnen von troggy, 24 Januar 2016, 17:25:31

Vorheriges Thema - Nächstes Thema

troggy

Hallo zusammen,

bin noch relativ neu mit fhem unterwegs und habe mich in den letzten Wochen etwas eingearbeitet.
Aktuell kämpfe ich damit, die Temperatur und Luftfeuchtigkeit aus fhem (über weather modul) an KNX zu senden. Dieses soll in einem Infodisplay dargestellt werden.
Manuell wert über "set .. value 5" funktioniert einwandfrei, aber das der trigger über notify bringt nur 0 Werte auf den Bus.

Adressen sind in der ETS mit DPT 9.001 und 9.007 parametrisiert.

Am Beispiel der Luftfeuchtigkeit, geht das auslesen des "Weather-Moduls" und Übergabe an KNX geht analog zu folgendem Threads mit:
http://forum.fhem.de/index.php/topic,11505.msg75941.html#msg75941
http://forum.fhem.de/index.php/topic,32417.msg248668.html#msg248668

Weather und die readings habe ich von http://blog.wenzlaff.de/?p=1803 übernommen

meine fhem.cfg:


define EIB_4403 EIB 4/4/3
attr EIB_4403 IODev KNX
attr EIB_4403 alias EIB_humid
attr EIB_4403 model percent
define T_KNX_humid notify Regensburg_Wetter:humidity:.* set EIB_4403 value $EVENT



Logfile mit Verbose 5 bringt:

2016.01.24 17:03:40 5: Triggering EIB_4402 (1 changes)
2016.01.24 17:03:40 5: Notify loop for EIB_4402 0 °C
2016.01.24 17:03:40 5: Triggering T_KNX_humid
2016.01.24 17:03:40 4: T_KNX_humid exec set EIB_4403 value $EVENT
2016.01.24 17:03:40 5: Cmd: >set EIB_4403 value $EVENT<
2016.01.24 17:03:40 5: EIB set EIB_4403 value humidity: 87
2016.01.24 17:03:40 5: EIB_EncodeByDatapointType: EIB_4403, Value= humidity:, model= percent
[b]2016.01.24 17:03:40 5: EIB dpt5 encode humidity: = 0000 factor = 0.392156862745098 translated: 0000[/b]
2016.01.24 17:03:40 4: EIB EIB_4403 translated humidity: to 0000
2016.01.24 17:03:40 5: EIB parse 0000 for EIB_4403 model: percent dpt: dpt5 unit: %
2016.01.24 17:03:40 4: EIB_ParseByDatapointType: EIB_4403, origval= 0000, transval= 0, Group= 1, Model= percent, code= dpt5, unit= %
2016.01.24 17:03:40 5: KNX sending Bw44030000
2016.01.24 17:03:40 5: encode_eibd dst: 4403 apci: 2 datalen: 2 data: 0 0
2016.01.24 17:03:40 5: SendGroup: dst: 4403, msg: 9219 0 128 0


Irgendwo scheint noch ein Fehler bei model oder so zu sein, komme aber nicht drauf. Es geht weder Temperatur noch Luftfeuchtigkeit.
Versuche über einen Dummy die Daten auszulesen und per stateformat habe ich aufgegeben.

Im nächsten Schritt möchte ich noch die aktuelle Fahrzeit aus Google Maps (wie in diesem http://www.juergenstechnikwelt.de/smarthome-2/smarthome-mit-fhem-fahrzeiten-mit-verkehr-mittels-google-maps-api-anzeigen/) auf den Bus senden, aber dazu müsste ich erst die Zeit in Minuten umrechnen und als DPT 7/minute oder so senden?

Hat jemand eine Idee? Schon mal danke im Vorraus

Andi291

Abend!

Steht doch da :-)

2016.01.24 17:03:40 5: EIB_EncodeByDatapointType: EIB_4403, Value= humidity:, model= percent

Spaß...

Du übergibst "humidity: 87" als value. Das geht natürlich nicht. Richtig wäre nur "87".

Grüße, Andi

troggy

Danke Andi,
Irgendwie war ich fest der Meinung humdity ist der parameter und value die Zahl und Einheit, aber so einfach kann die Welt sein.  :-[

Ein gut platziertes $EVTPART1 und schon geht es. :-)




Andi291

Abend!

Hab ich ganz übersehen - spezifizier mal bitte Deine Wünsche zum Zeit senden. Mit DPT 10 geht's ohne viel konvertieren...

Grüße, Andi

troggy

Hi Andy,

danke für den Tipp. Habe die letzten Tage noch ein paar andere Baustellen im fhem aufgeräumt.

Bzgl. der Staumeldung. Hatte es erst mit andern DPT versucht, mit der DPT10 klappt es auf Anhieb und fhem sendet die Zeit auf den Bus im korrekten Zeitformat.

Problem:  Das GIRA Infodisplay kann die DPT10 als Zeit nicht verarbeiten. Entweder Gleitkomma, Scaling, Float, 8/16/16bit value oder ASCII.

Senden via Ascii hatte ich versucht, wird aber im Display nicht angezeigt und gefällt mir vom Ansatz her schon nicht (Zahl als Ascii versenden). Gibt es eine Möglichkeit die Zeit (min) in fhem in eine Gleitkommazahl zu rechnen?

Andi291

Servus!

Also die Darstellung von DPT 10 als String erscheint mir recht einfach - nimm ein Notify auf das DPT10-Objekt und schick den Inhalt von Status an ein DPT16-Objekt.
Testweise würd ich zuerst mal ein DPT16-Hello-World implementieren.

Grüße, Andi