Seite 1 von 3

Hilfe bei REGEX Transformation eines MQTT Gerätes

Verfasst: 1. Jul 2020 14:05
von jack_low
Hallo.
Ich hoffe es kann mir jemand mit meinen MQTT Ultraschallsensor weiterhelfen. Die Abfrage sieht wie folgt aus:


MQTT State Topic: /status/ultra

MQTT Command Topic: /esp/control

Custom On/Open Value: u[1]:1 - wobei die Zahl in den Eckigen Klammern die Sensornummer angibt und die Zahl hinter dem Doppelpunkt die zeitliche Ultraschallsensor Abfrage (1: 100ms, 2:200ms, usw.)

Custom Off/Closed Value: u[1]:0 - hier bedeutet die 0 Ultraschallsensor Abfrage aus


Die Ausgabe sieht dann so aus: U[1]:63.2 - die Zahl ist der Messwert in cm


Der Log Viewer sagt folgendes:

2020-07-01 14:03:04.656 [ome.event.ItemCommandEvent] - Item 'Ultraschal' received command ON
2020-07-01 14:03:04.725 [nt.ItemStatePredictedEvent] - Ultraschal predicted to become ON
2020-07-01 14:03:04.763 [vent.ItemStateChangedEvent] - Ultraschal changed from OFF to ON
==> /var/log/openhab2/openhab.log <==
2020-07-01 14:03:05.925 [WARN ] [ab.binding.mqtt.generic.ChannelState] - Command 'U[1]:291.9' not supported by type 'OnOffValue': No enum constant org.eclipse.smarthome.core.library.types.OnOffType.U[1]:291.9
2020-07-01 14:03:05.949 [WARN ] [ab.binding.mqtt.generic.ChannelState] - Command 'U[1]:390.3' not supported by type 'OnOffValue': No enum constant org.eclipse.smarthome.core.library.types.OnOffType.U[1]:390.3
==> /var/log/openhab2/events.log <==
2020-07-01 14:03:05.923 [ome.event.ItemCommandEvent] - Item 'Sensor_1' received command U[1]:291.9
2020-07-01 14:03:05.934 [ome.event.ItemCommandEvent] - Item 'mqtt_topic_cba8f253_Sensor' received command U[1]:291.9
2020-07-01 14:03:05.944 [nt.ItemStatePredictedEvent] - Sensor_1 predicted to become U[1]:291.9
2020-07-01 14:03:05.986 [ome.event.ItemCommandEvent] - Item 'Sensor_1' received command U[1]:390.3
2020-07-01 14:03:06.000 [nt.ItemStatePredictedEvent] - mqtt_topic_cba8f253_Sensor predicted to become U[1]:291.9
2020-07-01 14:03:06.032 [ome.event.ItemCommandEvent] - Item 'mqtt_topic_cba8f253_Sensor' received command U[1]:390.3
2020-07-01 14:03:06.043 [vent.ItemStateChangedEvent] - Sensor_1 changed from U[1]:63.6 to U[1]:291.9
2020-07-01 14:03:06.048 [nt.ItemStatePredictedEvent] - Sensor_1 predicted to become U[1]:390.3
2020-07-01 14:03:06.098 [vent.ItemStateChangedEvent] - mqtt_topic_cba8f253_Sensor changed from U[1]:63.6 to U[1]:291.9
2020-07-01 14:03:06.107 [nt.ItemStatePredictedEvent] - mqtt_topic_cba8f253_Sensor predicted to become U[1]:390.3
2020-07-01 14:03:06.126 [vent.ItemStateChangedEvent] - Sensor_1 changed from U[1]:291.9 to U[1]:390.3
2020-07-01 14:03:06.129 [vent.ItemStateChangedEvent] - mqtt_topic_cba8f253_Sensor changed from U[1]:291.9 to U[1]:390.3

Jetzt zu meiner Frage: wie müsste eine REGEX Transformation aussehen, damit ich hier keine Warnungen mehr im Log bekomme und gleichzeitig den nackten Messwert erhalte um damit dann weiter in Rules arbeiten zu können ? Danke schon mal im Vorraus :-)

Re: Hilfe bei REGEX Transformation eines MQTT Gerätes

Verfasst: 1. Jul 2020 15:09
von peter-pan
Das was du an MQTT-Setup gepostet hast, scheint mir sehr dürftig, aber wenn ich mir die Warnung so anschaue würde ich vermuten, dass dein Item und/oder dein Thing vom Type Switch ist und aber entweder Number oder String sein sollte.

Re: Hilfe bei REGEX Transformation eines MQTT Gerätes

Verfasst: 1. Jul 2020 17:21
von jack_low
Richtig danke, sollte natürlich ein String sein, dadurch auch keine Warnungen mehr im Log. Und wie müsste ich jetzt transformieren damit ich aus dem Wert wie z.B. U[1]:127.7 dann nur die 127.7 stehen habe um in einer Rule auswerten kann wie < if (Sensor_1.state >= 100.5) > ?

String Sensor_1 "Sensor_1" {channel="mqtt:topic:cba8f253:Sensor1"}
123.png

Re: Hilfe bei REGEX Transformation eines MQTT Gerätes

Verfasst: 1. Jul 2020 17:31
von J-N-K
Probier mal REGEX:.*:([\d\.]+)

Re: Hilfe bei REGEX Transformation eines MQTT Gerätes

Verfasst: 1. Jul 2020 18:12
von jack_low
Super, vielen Dank, jetzt passt es :-)

Re: Hilfe bei REGEX Transformation eines MQTT Gerätes

Verfasst: 2. Jul 2020 16:37
von jack_low
Ich hätte doch noch eine Frage: Ich habe noch ein MQTT Relais welches mit dem gleichen Protokoll arbeitet. Sprich:

MQTT State Topic: /esp/status
MQTT Command Topic: /esp/control
Custom On/Open Value: R[1]:1
Custom Off/Closed Value: R[1]:0

Die Zahl in der eckigen Klammer gibt die Relais Nummer an und die 1 hinter dem Doppelpunkt beduetet Relais AN bzw. 0 Relais AUS.
Das Item muss hier als Switch angelegt werden. Das Schalten funktioniert wenn ich wie oben beschrieben habe eintrage, aber ich bekomme auch hier logierschweise Warnmeldungen weil "Custom On/Open Value" / "Custom Off/Closed Value" nicht ON/OFF oder eine Zahl ist.

2020-07-02 10:59:33.260 [ome.event.ItemCommandEvent] - Item 'GenericMQTTThingSwitch_Switch1' received command OFF
2020-07-02 10:59:33.295 [nt.ItemStatePredictedEvent] - GenericMQTTThingSwitch_Switch1 predicted to become OFF
2020-07-02 10:59:33.330 [vent.ItemStateChangedEvent] - GenericMQTTThingSwitch_Switch1 changed from ON to OFF
==> /var/log/openhab2/openhab.log <==
2020-07-02 10:59:34.197 [WARN ] [ab.binding.mqtt.generic.ChannelState] - Command 'R[1]:0' not supported by type 'OnOffValue': No enum constant org.eclipse.smarthome.core.library.types.OnOffType.R[1]:0
2020-07-02 10:59:34.201 [WARN ] [ab.binding.mqtt.generic.ChannelState] - Command 'R[1]:0' not supported by type 'OnOffValue': No enum constant org.eclipse.smarthome.core.library.types.OnOffType.R[1]:0
==> /var/log/openhab2/events.log <==
2020-07-02 10:59:34.195 [ome.event.ItemCommandEvent] - Item 'Switch4T' received command R[1]:0
2020-07-02 10:59:34.204 [ome.event.ItemCommandEvent] - Item 'mqtt_topic_cba8f253_Switch4_t' received command R[1]:0
2020-07-02 10:59:34.219 [nt.ItemStatePredictedEvent] - Switch4T predicted to become R[1]:0
2020-07-02 10:59:34.252 [nt.ItemStatePredictedEvent] - mqtt_topic_cba8f253_Switch4_t predicted to become R[1]:0
2020-07-02 10:59:34.284 [vent.ItemStateChangedEvent] - Switch4T changed from R[1]:1 to R[1]:0
2020-07-02 10:59:34.288 [vent.ItemStateChangedEvent] - Switch1 changed from ON to OFF
2020-07-02 10:59:34.291 [vent.ItemStateChangedEvent] - mqtt_topic_cba8f253_Switch4_t changed from R[1]:1 to R[1]:0

Ich habe zwar versucht zu formatieren und kann auch 1 bzw. 0 in die "Custom On/Open Value" / "Custom Off/Closed Value" Felder eintragen (siehe Fotos), aber die Warnmeldungen kommen trotzdem noch. Ich hoffe das mir noch jemand helfen kann bei dieser Formatierung.

Nochmal ein großes Dankeschön im Voraus :-)

Re: Hilfe bei REGEX Transformation eines MQTT Gerätes

Verfasst: 2. Jul 2020 17:37
von peter-pan
Lass das "[R1]:" in der Formatierung weg, also nur "%s". Vielleicht klappt es so ?!

Re: Hilfe bei REGEX Transformation eines MQTT Gerätes

Verfasst: 2. Jul 2020 17:47
von jack_low
Danke für den Tipp, aber so funktioniert es nicht. Es kommen so zwar keine Warnungen mehr aber das Relais schaltet nicht mehr.

Re: Hilfe bei REGEX Transformation eines MQTT Gerätes

Verfasst: 2. Jul 2020 22:59
von J-N-K
Bevor ich etwas suche, was garnicht da ist: Welche Version benutzt Du?

Re: Hilfe bei REGEX Transformation eines MQTT Gerätes

Verfasst: 3. Jul 2020 14:25
von jack_low
Ich nutze die openHAB 2.5.5-1 (Release Build) Version.