Zitat von element
Beitrag anzeigen
Ankündigung
Einklappen
Keine Ankündigung bisher.
Neues MQTT Plugin
Einklappen
X
-
Das habe ich. Ich muss aber gestehen, das ich erst lernen muss damit umzugehen. Ich hatte das Item falsch eingestellt.
Der eval Syntax Checker gibt mir genau denselben Ausdruck zurück ohne ihn umzuwandeln. Und das es sich um ein dict handelt. Ich wusste nicht wie der Checker arbeitet, da er den Wert aber nicht umwandelt und er das wohl sollte mache ich also immer noch etwas falsch.
Ich brauche einen Tip wo ich finde wie ich es richtig eingeben muss oder ein Beispiel.
Ich habe bereits Sylvester und Neujahr nach einer Lösung gesucht und immer wieder probiert und smarthome immer wieder neu gestartet. Ich frage weil ich nicht weiter weiß, nicht um eure Geduld zu testen.
Ich will mir eine Sprachsteuerung mit mehreren items bauen. Dazu benötige ich das das mqtt Plugin die payloads in dieser vorgegebenen Form liefert, " { "state":"itemwert"} " ohne die äußeren Gänsefüßchen. Bei bool items hatte ich mir geholfen indem ich mit If und else den kompletten Ausdruck evaluiert habe, jetzt benötige ich aber die Eingabe des itemwertes in die mqtt- payloads, und das bekomme ich nicht hin.
Kommentar
-
Ja, nur wenn Du im eval
Code:"(sh.eg.wohnen.licht.decke.dimmen())"
Code:(sh.eg.wohnen.licht.decke.dimmen())
Du musst das schon ohne die Anführungszeichen machen und im eval Ausdruck einen String zusammenbauen, der genau eine String Representation des dicts enthält, also statt
Code:{"state":"(sh.eg.wohnen.licht.decke.dimmen())"}
Code:{"state": sh.eg.wohnen.licht.decke.dimmen()}
Viele Grüße
Martin
There is no cloud. It's only someone else's computer.
Kommentar
-
Zitat von TCr82 Beitrag anzeigenNur die Items mit dem Typ Dict werden nicht auf den Broker geschrieben
Gruß
Kommentar
-
Zitat von Msinn Beitrag anzeigenWie schreibst Du die Daten denn in das Item?
Zitat von Msinn Beitrag anzeigenWas zeigt die Admin GUI als aktuellen Wert?Zitat von TCr82 Beitrag anzeigenWenn ich über das Admin-Interface mir den Wert des Items ansehe ist dieser wie folgt:
Code:{'lastvalue': '0', 'sunset': '16:37', 'list': [{'time': '04:00', 'rrule': 'FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA,SU', 'value': '1', 'active': True}, {'time': '04:30', 'rrule': 'FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA,SU', 'value': '0', 'active': True}, {'time': '07:30', 'rrule': 'FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA,SU', 'value': '1', 'active': True}, {'time': '09:00', 'rrule': 'FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA,SU', 'value': '0', 'active': True}, {'time': '14:30', 'rrule': 'FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA,SU', 'value': '1', 'active': True}, {'time': '15:00', 'rrule': 'FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA,SU', 'value': '0', 'active': True}, {'time': '17:00', 'rrule': 'FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA,SU', 'value': '1', 'active': True}, {'time': '22:00', 'rrule': 'FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA,SU', 'value': '0', 'active': True}], 'active': True, 'interpolation': {'initage': '', 'initialized': True, 'itemtype': 'bool', 'interval': '', 'type': 'none'}, 'sunrise': '08:23'}
Zitat von Msinn Beitrag anzeigenZur Meldung im Broker Log: Wie häufig erscheint denn der Log Eintrag?
1609504860 = 1. January 2021 12:41:00
1609506138 = 1. January 2021 13:02:18
1609507133 = 1. January 2021 13:18:53
1609514825 = 1. January 2021 15:27:05
1609516643 = 1. January 2021 15:57:23
1609516865 = 1. January 2021 16:01:05
1609516982 = 1. January 2021 16:03:02
1609517040 = 1. January 2021 16:04:00
Kann sein, dass die Meldung jedesmal kommt, wenn ich shNG neu gestartet habe und das Plugin den Wert in das Item geschrieben hat.
Zitat von Msinn Beitrag anzeigenWie hast Du das Websocket Modul konfiguriert?
Gruß
Kommentar
-
Zitat von Msinn Beitrag anzeigenWie hast Du das Websocket Modul konfiguriert?
Code:root@heizung:/usr/local/smarthome# cat etc/module.yaml %YAML 1.1 --- # etc/module.yaml # support for web server http: module_name: http starturl: admin # support for graphical admin interface admin: module_name: admin #enable, if mqtt protocol is going to be used mqtt: module_name: mqtt broker_monitoring: true broker_host: zentrale.fritz.box last_will_topic: devices/shng-module/$online last_will_payload: 'False' birth_topic: devices/shng-module/$online birth_payload: 'True' websocket: module_name: websocket
Kommentar
-
Zitat von TCr82 Beitrag anzeigenKann sein, dass die Meldung jedesmal kommt, wenn ich shNG neu gestartet habe und das Plugin den Wert in das Item geschrieben hat.
Das zeigt dass Logfile:
1609771731: Socket error on client heizung.MQTT-module, disconnecting.
1609771742: New connection from 192.168.99.30 on port 1883.
Ich erstelle gleich mal noch ein Debug Log, wenn ich das konfiguriert bekomme.
Kommentar
-
Code:root@heizung:~# grep Schaltzeiten /usr/local/smarthome/var/log/smarthome-develop.log | grep -v -e Betriebsart -e Heizen 2021-01-04 15:49:10 INFO __init__ Main Loaded Application Timer {'Timer_Warmwasser': {'item': Item: technik.heizung.WW.Schaltzeiten, 'commandcodes': ['2100', '2108', '2110', '2118', '2120', '2128', '2130']}} -- (__init__.py:parse_item:216) 2021-01-04 15:49:10 INFO __init__ Main Loaded Application Timer {'Timer_Warmwasser': {'item': Item: technik.heizung.WW.Schaltzeiten, 'commandcodes': ['2100', '2108', '2110', '2118', '2120', '2128', '2130']}, 'Timer_A1M1': {'item': Item: technik.heizung.HK1.Schaltzeiten, 'commandcodes': ['2000', '2008', '2010', '2018', '2020', '2028', '2030']}} -- (__init__.py:parse_item:216) 2021-01-04 15:49:10 INFO __init__ Main Loaded Application Timer {'Timer_Warmwasser': {'item': Item: technik.heizung.WW.Schaltzeiten, 'commandcodes': ['2100', '2108', '2110', '2118', '2120', '2128', '2130']}, 'Timer_A1M1': {'item': Item: technik.heizung.HK1.Schaltzeiten, 'commandcodes': ['2000', '2008', '2010', '2018', '2020', '2028', '2030']}, 'Timer_M2': {'item': Item: technik.heizung.HK2.Schaltzeiten, 'commandcodes': ['3000', '3008', '3010', '3018', '3020', '3028', '3030']}} -- (__init__.py:parse_item:216) 2021-01-04 15:56:26 DEBUG __init__ Main parsing item: technik.heizung.WW.Schaltzeiten -- (__init__.py:parse_item:143) 2021-01-04 15:56:26 DEBUG __init__ Main (parsing result): item.conf '{'viess_timer': 'Timer_Warmwasser', 'viess_init': True, 'mqtt_topic_init': 'Heizung/WW/Schaltzeiten', 'mqtt_retain': 'True', 'mqtt_topic_out': 'Heizung/WW/Schaltzeiten'}' -- (__init__.py:parse_item:170) 2021-01-04 15:56:26 DEBUG __init__ Main parsing item: technik.heizung.HK1.Schaltzeiten -- (__init__.py:parse_item:143) 2021-01-04 15:56:26 DEBUG __init__ Main (parsing result): item.conf '{'viess_timer': 'Timer_A1M1', 'viess_init': True, 'mqtt_topic_init': 'Heizung/HK1/Schaltzeiten', 'mqtt_retain': 'True', 'mqtt_topic_out': 'Heizung/HK1/Schaltzeiten'}' -- (__init__.py:parse_item:170) 2021-01-04 15:56:26 DEBUG __init__ Main parsing item: technik.heizung.HK2.Schaltzeiten -- (__init__.py:parse_item:143) 2021-01-04 15:56:26 DEBUG __init__ Main (parsing result): item.conf '{'viess_timer': 'Timer_M2', 'viess_init': True, 'mqtt_topic': 'Heizung/HK2/Schaltzeiten', 'mqtt_retain': 'True', 'mqtt_topic_in': 'Heizung/HK2/Schaltzeiten', 'mqtt_topic_out': 'Heizung/HK2/Schaltzeiten'}' -- (__init__.py:parse_item:170) 2021-01-04 15:56:26 INFO __init__ Main Publishing topic 'Heizung/HK2/Schaltzeiten' (when needed) for item 'technik.heizung.HK2.Schaltzeiten' -- (__init__.py:parse_item:186) 2021-01-04 15:56:27 INFO mqttplugin mqtt _start_subscription: Subscribing to topic Heizung/HK2/Schaltzeiten, payload_type 'dict' for item technik.heizung.HK2.Schaltzeiten (callback=<bound method MqttPlugin._on_mqtt_message of <plugins.mqtt.Mqtt2 object at 0xa680d190>>) -- (mqttplugin.py:_start_subscription:109) 2021-01-04 15:56:27 INFO __init__ mqtt subscribe_topic: Adding topic 'Heizung/HK2/Schaltzeiten' -- (__init__.py:subscribe_topic:412) 2021-01-04 15:56:27 INFO __init__ mqtt _add_subscription_definition: Plugin 'mqtt-5' is subscribing to topic 'Heizung/HK2/Schaltzeiten' -- (__init__.py:_add_subscription_definition:367) 2021-01-04 15:56:27 INFO __init__ mqtt subscribe_topic: mqtt module is subscribing to topic 'Heizung/HK2/Schaltzeiten' with qos=1 at broker (result=0, mid=18) -- (__init__.py:subscribe_topic:427)
Heizung/WW/Schaltzeiten gehtZuletzt geändert von TCr82; 04.01.2021, 16:27.
Kommentar
-
Danke für die Hilfe, es ist nicht das erste Mal das ich Probleme mit Zeichen und Klammern habe.
Das item wird aber nicht getriggert. Ich hänge mal die yaml und das was smarthome daraus macht an.
Code:eg: wohnen: licht: decke: schalten: type: bool visu_acl: rw knx_dpt: 1 knx_init: 1/1/173 knx_listen: 1/1/173 knx_send: 1/1/170 webservices_set: 'doorpi' webservices_data: 'val' nacht: type: bool knx_dpt: 1 knx_init: 1/1/179 knx_listen: 1/1/179 nachdimm_wert: 1 helligkeit: type: num visu_acl: rw knx_dpt: 5 knx_cache: 1/1/172 enforce_updates: 'yes' knx_send: 1/1/172 dimmen: type: num visu_acl: rw knx_dpt: '5' knx_init: 1/1/174 knx_listen: 1/1/174 knx_send: 1/1/172 webservices_set: 'doorpi' webservices_data: 'full' mqtt_in: type: dict mqtt_topic_in: "sepia/smart-devices/wohnen/licht/decke/dimmen" on_change: - eg.wohnen.licht.decke.dimmen = value['state'] mqtt_out: type: dict mqtt_topic_out: "sepia/smart-devices/wohnen/licht/decke/dimmen" eval_trigger: eg.wohnen.licht.decke.dimmen eval: {"state" : sh.eg.wohnen.licht.decke.dimmen()}
Ich glaube die Bildung eines neuen items ist nicht normal, im item mqtt_out ist die Zeile eval leer, die Zeile eval_trigger ist mit dem richtigen trigger gefüllt.
Ich habe im yaml file die Zeilen getauscht, das eval_trigger vor eval steht, das bringt aber nichts.
Ich kann den Wert {"state":6} im mqtt_out eingeben und aktualisieren-> der Wert wird gesendet und in der sepia Sprachsteuerung auch verstanden.
Im mqtt_out.eval steht unter
Plugin spezifische Konfiguration
state mit dem Wert sh.eg.wohnen.licht.decke.dimmen()
stelle ich das item mqtt_out auf type num ein passiert dasselbe. Ich hatte das dicht im Verdacht das zu verursachen.
Jetzt vermute ich, das der Doppelpunkt im {"state": sh.eg.wohnen.licht.decke.dimmen()} das neue item erzeugt.
Stehe wieder auf dem Schlauch und brauche noch einen Rat.
Kommentar
-
Zitat von TCr82 Beitrag anzeigenWobei es aber eigentlich erstmal nur um das Item technik.heizung.WW.Schaltzeiten bzw dem Topic
Heizung/WW/Schaltzeiten geht
Viele Grüße
Martin
There is no cloud. It's only someone else's computer.
Kommentar
-
Zitat von element Beitrag anzeigenIch glaube die Bildung eines neuen items ist nicht normal, im item mqtt_out ist die Zeile eval leer, die Zeile eval_trigger ist mit dem richtigen trigger gefüllt.
Code:mqtt_out: type: dict mqtt_topic_out: "sepia/smart-devices/wohnen/licht/decke/dimmen" eval_trigger: eg.wohnen.licht.decke.dimmen eval: {"state" : sh.eg.wohnen.licht.decke.dimmen()}
Code:mqtt_out: type: dict mqtt_topic_out: "sepia/smart-devices/wohnen/licht/decke/dimmen" eval_trigger: eg.wohnen.licht.decke.dimmen eval: state: sh.eg.wohnen.licht.decke.dimmen()
eval muss einen String enthalten.
Du müsstest den Ausdruck in Anführungszeichen setzen:
Code:eval: '{"state" : sh.eg.wohnen.licht.decke.dimmen()}'
Code:eval: "{'state' : sh.eg.wohnen.licht.decke.dimmen()}"
Viele Grüße
Martin
There is no cloud. It's only someone else's computer.
Kommentar
-
Zitat von Msinn Beitrag anzeigenTCr82 wie sind die Items denn definiert?
https://knx-user-forum.de/forum/supp...91#post1591991
EDIT:
Die Definition sieht man auch auch nochmal bei "(parsing result): item.conf '{'viess_timer': 'Timer_Warmwasser',....." in dem Debug-Log was ich gepostet habe.
Und ich habe eben auch mal ein enforce_updates: yes mit dazu gebaut, aber das hat leider auch nichts geändert.Zuletzt geändert von TCr82; 04.01.2021, 19:07.
Kommentar
Kommentar