String-Bearbeitung (msg.payload) in Node-Red

Hallo,

mal wieder ein Node-Red-Problem. :wink:

Ich habe die Integration des DWD in HA installiert um mich über Wetterwarnungen in meiner Umgebung/Stadt informieren zu lassen.
Wenn eine Wetterwarung kommt, schicke ich mir eine Benachrichtigung auf iPhone, das eine Warnung vorliegt.
Zum Beginn der Warnperiode (meist kommt die Warnung/Ankündigung früher) schicke ich mir den Text der Warnung per telegram aufs iPhone und zu ALEXA, die mir den Text dann ansagt.
So weit so gut.

Gestern kam folgender Text:

“Es liegt eine Wetterwarnung vor: Es treten Windböen mit Geschwindigkeiten zwischen 50km/h (14 m/s, 28 kn, Bft 7) und 60 km/h (17 m/s, 33 kn, Bft 7) anfangs aus wehster Richtung auf.”

Die Textpassage in den Klammern, würde ich gerne entfernen, bevor ich den Text verschicke. Gibt es eine Möglichkeit, aus einer msg.paload alles zwischen 2 Klammern zu entfernen, auch wenn die Klammer nicht immer an der selben Stelle steht und unterschiedlich lang ist?

Welches Feld verwendest du bzw. von welchem Feld der API kommt der Text? warning__headline oder description?

Den hier:

msg.data.attributes.warning_1_description

Alles, wie hier erklärt:

bitte sehr

[{"id":"bc1430f835c93119","type":"change","z":"7e6af0015415146d","name":"","rules":[{"t":"change","p":"payload","pt":"msg","from":"\\(.*?\\)","fromt":"re","to":"","tot":"str"},{"t":"set","p":"payload","pt":"msg","to":"$trim(payload)\t","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":470,"y":5860,"wires":[["f056e363494a7401"]]}]

Nachtrag: Flow geändert mit

$trim(payload)

um überflüssige Leerzeichen zu entfernen.

Für alle die es nicht importieren wollen - hier die Lösung als Bild:

Du bist mein Held! :grinning:

Gibt es für die Logik der 1. Regel irgendwo eine Anleitung oder eine Beschreibung, wo man solche Regeln/Funktionen nachlesen kann?

Grundsätzlich kannst Du sehr vieles über reguläre Ausdrücke lösen. Ich empfehle Dir diese Seite, da sie sowohl erklärt - aber Du kannst dort auch üben. Ich hoffe dich stört das Englisch nicht.

2 „Gefällt mir“

Ach manchmal nähere ich mich erst der elegantesten Lösung. Man kann das ganze natürlich auch mit einer Regel machen:

$trim($replace(payload, /\(.*?\)/, ''))
1 „Gefällt mir“

Und dabei ist es erst Mittag! :joy: :wink:

BTW:
Da fällt mir noch eine zweite Frage bzgl. DWD ein:

Der DWD liefert ja für die verschiedenen Warnstufen unterschiedliche Informationen und kennzeichnen das auf der HP mit :


jetzt könnte ich natürlich für die unterschiedlichen Warnstufen (1-4)

4x den gleichen flow bauen und nur die Variable der Entität:

msg.data.attributes.warning_x_description

von 1-4 ändern.

Aber das geht doch bestimmt einfacher in einem flow, mit einer Abfrage welche Stufe ausgelöst wurde. Nur wie bekomme ich die Zahl an die “x”-Position bei der Entität?

Na Du kannst entweder in einer switch Node nach den level verzweigen oder keine Ahnung was Du machst - abfragen, ob eine Eigenschaft existiert oder nicht.

Ich geh doch mal davon aus, dass die DWD Entität Dir in msg.data oder was weiß ich alle diese Felder liefert.

Du kannst doch dann in Deinem Flow direkt unterscheiden mit einer switch Node:

Falls das x durch 1, 2, etc. geändert wird - dann wertest Du halt Dein gesamtes attributes objekt aus.

Ja, das ist klar.
Ich kann mit einer “switch”-node abfragen, welche Stufe 1-4 oder keine = 0 ausgelöst wurde.
Momentan habe ich meinen flow für Stufe “1” aufgebaut, d.h. bei allen verwendeten Entitäten steht anstelle des “X” eine “1”, wie z.B.: hier:

msg.data.attributes.warning_1_description

Jetzt könnte ich hier der “switch”-node 4 parallele flows anordnen und einfach nur die “1” durch “2-4” ersetzen.
Meine Frage war, ob das nicht einfacher geht, d.h. ich kann in den entsprechenden nodes jeweils die Zahl der jeweiligen Stufe setzten und habe damit nur einen flow und nicht 4 parallele.

So hier meine Lösung:

[{"id":"e2a4f5dbdd396c5c","type":"switch","z":"7e6af0015415146d","name":"","property":"$keys(data.attributes)","propertyType":"jsonata","rules":[{"t":"cont","v":"description","vt":"str"},{"t":"cont","v":"level","vt":"str"}],"checkall":"true","repair":false,"outputs":2,"x":690,"y":6080,"wires":[["de39cc4935a2ccae"],["dc89ff740645440b"]]},{"id":"4a0fb49bac33a1d2","type":"inject","z":"7e6af0015415146d","name":"","props":[{"p":"msg.data.attributes.warning_1_description","v":"test1","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","x":510,"y":6040,"wires":[["e2a4f5dbdd396c5c"]]},{"id":"f4b1b1c9b075573e","type":"inject","z":"7e6af0015415146d","name":"","props":[{"p":"msg.data.attributes.warning_2_description","v":"test2","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","x":510,"y":6080,"wires":[["e2a4f5dbdd396c5c"]]},{"id":"85964a98b48574af","type":"debug","z":"7e6af0015415146d","name":"Beschreibung alle Warnstufen","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":1130,"y":6060,"wires":[]},{"id":"ec5e11eba6e12fca","type":"inject","z":"7e6af0015415146d","name":"","props":[{"p":"msg.data.attributes.warning_1_level","v":"1","vt":"num"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","x":510,"y":6120,"wires":[["e2a4f5dbdd396c5c"]]},{"id":"f8571d3df518520d","type":"debug","z":"7e6af0015415146d","name":"Level alle Warnstufen","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":1100,"y":6100,"wires":[]},{"id":"de39cc4935a2ccae","type":"change","z":"7e6af0015415146d","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"data.attributes.*","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":850,"y":6060,"wires":[["85964a98b48574af"]]},{"id":"dc89ff740645440b","type":"change","z":"7e6af0015415146d","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"data.attributes.*","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":850,"y":6100,"wires":[["f8571d3df518520d"]]}]

Heute abend kann ich dann noch die 0 vielleicht ausschliessen - mal schauen.

Ich hab’s hinbekommen.
Musste einfach die “switch”-node erweitern und die Meldungsaufbereitung auf
4 Varianten erweitern.
Der obere Flow ist der neue, der untere war der alte.

[{"id":"12805c09244a9e90","type":"comment","z":"5e38a40b1ab38ea9","name":"DWD-Warnungen","info":"","x":150,"y":1322,"wires":[]},{"id":"4a1c096a280e5f0d","type":"api-call-service","z":"5e38a40b1ab38ea9","name":"Ausgabe","server":"a1aba8eb.bfd618","version":5,"debugenabled":false,"domain":"notify","service":"telegram_harald","areaId":[],"deviceId":[],"entityId":[],"data":"(msg.payload)","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":1266.571533203125,"y":1383.7142333984375,"wires":[[]]},{"id":"cb5e1248fc37d1c4","type":"function","z":"5e38a40b1ab38ea9","name":"Message","func":"let payload = {\n    \"message\": \"Es liegt eine Wetterwarnung vor: \" + (msg.data.attributes.warning_1_description)}\nreturn { payload };","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":531.1429443359375,"y":1398.5714111328125,"wires":[["bc1430f835c93119"]]},{"id":"83abbd668e554cc6","type":"api-current-state","z":"5e38a40b1ab38ea9","name":"DWD","server":"a1aba8eb.bfd618","version":3,"outputs":1,"halt_if":"","halt_if_type":"str","halt_if_compare":"is","entity_id":"sensor.dwd_weather_warnings_808121000_current_warning_level","state_type":"str","blockInputOverrides":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"entity"}],"for":"0","forType":"num","forUnits":"minutes","override_topic":false,"state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","x":482,"y":1332,"wires":[["b716f6665d30d81f"]]},{"id":"6b68a9d6fd4b16ca","type":"switch","z":"5e38a40b1ab38ea9","name":"Warnung","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"1","vt":"num"},{"t":"eq","v":"2","vt":"num"},{"t":"eq","v":"3","vt":"num"},{"t":"eq","v":"4","vt":"num"},{"t":"eq","v":"0","vt":"num"}],"checkall":"false","repair":false,"outputs":5,"x":336,"y":1468,"wires":[["cb5e1248fc37d1c4"],["7480f49c448fbe1e"],["ebca405674658eca"],["c59384348d7de1a7"],["6c4946b0883121e4"]]},{"id":"010080c483544834","type":"time-range-switch","z":"5e38a40b1ab38ea9","name":"tagsüber","lat":"49.0804","lon":"9.3104","startTime":"05:00","endTime":"22:00","startOffset":0,"endOffset":0,"x":1923.4287719726562,"y":1556.2857847213745,"wires":[["420b6b592c627853"],[]]},{"id":"420b6b592c627853","type":"alexa-remote-routine","z":"5e38a40b1ab38ea9","name":"Sprachausgabe","account":"1dc2bfdd622bc8d9","routineNode":{"type":"speak","payload":{"type":"announcement","text":{"type":"msg","value":"payload.message"},"devices":["G000RA0995260UQ8","G2A0P30774060QHW"]}},"x":2093.4287719726562,"y":1540.2857847213745,"wires":[[]]},{"id":"4bc72abf87ff6d37","type":"moment","z":"5e38a40b1ab38ea9","name":"Zeit formatieren","topic":"","input":"payload","inputType":"msg","inTz":"Europe/Berlin","adjAmount":"0","adjType":"minutes","adjDir":"add","format":"DD.MM.YYYY HH:mm","locale":"de","output":"payload","outputType":"msg","outTz":"Europe/Berlin","x":488,"y":1684,"wires":[["7ed261982de49710"]]},{"id":"7cddc7aa69f96405","type":"moment","z":"5e38a40b1ab38ea9","name":"Zeit formatieren","topic":"","input":"data.attributes.warning_1_start","inputType":"msg","inTz":"Europe/Berlin","adjAmount":"1","adjType":"minutes","adjDir":"add","format":"DD.MM.YYYY HH:mm","locale":"de","output":"payload","outputType":"msg","outTz":"Europe/Berlin","x":486,"y":1632,"wires":[["7ed261982de49710"]]},{"id":"7ed261982de49710","type":"join","z":"5e38a40b1ab38ea9","name":"","mode":"custom","build":"array","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"","count":"2","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":656,"y":1632,"wires":[["7ec6df3e6ef7fa21"]]},{"id":"7ec6df3e6ef7fa21","type":"switch","z":"5e38a40b1ab38ea9","name":"aktuell?","property":"payload[0]","propertyType":"msg","rules":[{"t":"eq","v":"payload[1]","vt":"msg"},{"t":"gt","v":"payload[1]","vt":"msg"}],"checkall":"true","repair":false,"outputs":2,"x":804,"y":1632,"wires":[["286b86dc29b0d2b3","faf479f296de97d1","1aecb61b250d183c"],["f3043e8ed07d0eb5"]]},{"id":"7c1b6bea3d464280","type":"api-current-state","z":"5e38a40b1ab38ea9","name":"DWD","server":"a1aba8eb.bfd618","version":3,"outputs":1,"halt_if":"","halt_if_type":"str","halt_if_compare":"is","entity_id":"sensor.dwd_weather_warnings_808121000_current_warning_level","state_type":"str","blockInputOverrides":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"entity"}],"for":"0","forType":"num","forUnits":"minutes","override_topic":false,"state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","x":318,"y":1632,"wires":[["7cddc7aa69f96405"]]},{"id":"5e17d134ce451f7b","type":"server-state-changed","z":"5e38a40b1ab38ea9","name":"Aktuelle Zeit","server":"a1aba8eb.bfd618","version":5,"outputs":1,"exposeAsEntityConfig":"","entityId":"sensor.time","entityIdType":"exact","outputInitially":true,"stateType":"str","ifState":"","ifStateType":"num","ifStateOperator":"is","outputOnlyOnStateChange":false,"for":"0","forType":"num","forUnits":"minutes","ignorePrevStateNull":false,"ignorePrevStateUnknown":false,"ignorePrevStateUnavailable":false,"ignoreCurrentStateUnknown":false,"ignoreCurrentStateUnavailable":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"eventData"},{"property":"topic","propertyType":"msg","value":"","valueType":"triggerId"},{"property":"trigger","propertyType":"msg","value":"","valueType":"date"}],"x":140,"y":1682,"wires":[["7c1b6bea3d464280","4bc72abf87ff6d37"]]},{"id":"e3a62e6890212c08","type":"server-state-changed","z":"5e38a40b1ab38ea9","name":"DWD-Warungen","server":"a1aba8eb.bfd618","version":5,"outputs":1,"exposeAsEntityConfig":"","entityId":"sensor.dwd_weather_warnings_808121000_current_warning_level","entityIdType":"exact","outputInitially":true,"stateType":"num","ifState":"","ifStateType":"num","ifStateOperator":"is","outputOnlyOnStateChange":false,"for":"1","forType":"num","forUnits":"seconds","ignorePrevStateNull":false,"ignorePrevStateUnknown":false,"ignorePrevStateUnavailable":false,"ignoreCurrentStateUnknown":false,"ignoreCurrentStateUnavailable":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"eventData"},{"property":"topic","propertyType":"msg","value":"","valueType":"triggerId"}],"x":146,"y":1470,"wires":[["6b68a9d6fd4b16ca","1bc9613086394754"]]},{"id":"286b86dc29b0d2b3","type":"api-call-service","z":"5e38a40b1ab38ea9","name":"DWD Warnung Beginn","server":"a1aba8eb.bfd618","version":5,"debugenabled":false,"domain":"notify","service":"mobile_app_iphone_harald_privat","areaId":[],"deviceId":[],"entityId":[],"data":"{\"message\":\"DWD-Warnung ab jetzt\",\"data\":{\"type\":\"announce\"}}","dataType":"json","mergeContext":"Test","mustacheAltTags":true,"outputProperties":[],"queue":"all","x":1252.857177734375,"y":1444.5714111328125,"wires":[[]]},{"id":"1aecb61b250d183c","type":"api-call-service","z":"5e38a40b1ab38ea9","name":"DWD AN","server":"a1aba8eb.bfd618","version":5,"debugenabled":false,"domain":"input_boolean","service":"turn_on","areaId":[],"deviceId":[],"entityId":["input_boolean.dwd_warnungen"],"data":"","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":1230.857177734375,"y":1498.5714111328125,"wires":[[]]},{"id":"6bc8c5980fc2e227","type":"api-call-service","z":"5e38a40b1ab38ea9","name":"DWD Warnung Ende","server":"a1aba8eb.bfd618","version":5,"debugenabled":false,"domain":"notify","service":"mobile_app_iphone_harald_privat","areaId":[],"deviceId":[],"entityId":[],"data":"{\"message\":\"DWD-Warnung beendet\",\"data\":{\"type\":\"announce\"}}","dataType":"json","mergeContext":"Test","mustacheAltTags":true,"outputProperties":[],"queue":"all","x":768.28564453125,"y":1509.142822265625,"wires":[[]]},{"id":"8f7ae4cb752b0e62","type":"api-call-service","z":"5e38a40b1ab38ea9","name":"DWD AUS","server":"a1aba8eb.bfd618","version":5,"debugenabled":false,"domain":"input_boolean","service":"turn_off","areaId":[],"deviceId":[],"entityId":["input_boolean.dwd_warnungen"],"data":"","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":736.5714111328125,"y":1563.142822265625,"wires":[[]]},{"id":"178bb5445060d660","type":"function","z":"5e38a40b1ab38ea9","name":"Message","func":"let payload = {\n    \"message\": \"Es liegt eine Wetterwarnung vor: \" + (msg.data.attributes.warning_1_description)}\nreturn { payload };","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1535.71435546875,"y":1496,"wires":[["cb39e3bf992fdb81"]]},{"id":"faf479f296de97d1","type":"api-current-state","z":"5e38a40b1ab38ea9","name":"DWD","server":"a1aba8eb.bfd618","version":3,"outputs":1,"halt_if":"","halt_if_type":"str","halt_if_compare":"is","entity_id":"sensor.dwd_weather_warnings_808121000_current_warning_level","state_type":"str","blockInputOverrides":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"entity"}],"for":"0","forType":"num","forUnits":"minutes","override_topic":false,"state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","x":1230.857177734375,"y":1570.5714111328125,"wires":[["8e3d0fd006f1b6f9"]]},{"id":"1daad3e5871525bc","type":"function","z":"5e38a40b1ab38ea9","name":"Message","func":"let payload = {\n    \"message\": \"Die Warnung beginnt: \" + (msg.payload) + \" Uhr.\"}\nreturn { payload };","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":831.4285888671875,"y":1331.142822265625,"wires":[["bd6fc7452f68b534"]]},{"id":"b716f6665d30d81f","type":"moment","z":"5e38a40b1ab38ea9","name":"Zeit formatieren","topic":"","input":"data.attributes.warning_1_start","inputType":"msg","inTz":"Europe/Berlin","adjAmount":"0","adjType":"minutes","adjDir":"add","format":"DD.MM.YYYY HH:mm","locale":"de","output":"payload","outputType":"msg","outTz":"Europe/Berlin","x":650.857177734375,"y":1331.1429443359375,"wires":[["1daad3e5871525bc"]]},{"id":"b88ef7b916081c30","type":"join","z":"5e38a40b1ab38ea9","name":"","mode":"custom","build":"string","property":"payload.message","propertyType":"msg","key":"topic","joiner":" ","joinerType":"str","accumulate":false,"timeout":"","count":"2","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":1124.5714111328125,"y":1383.7142333984375,"wires":[["4a1c096a280e5f0d"]]},{"id":"f3043e8ed07d0eb5","type":"api-current-state","z":"5e38a40b1ab38ea9","name":"Warung AUS","server":"a1aba8eb.bfd618","version":3,"outputs":2,"halt_if":"off","halt_if_type":"str","halt_if_compare":"is","entity_id":"input_boolean.dwd_warnungen","state_type":"str","blockInputOverrides":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"entity"}],"for":"0","forType":"num","forUnits":"minutes","override_topic":false,"state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","x":1002,"y":1638,"wires":[["faf479f296de97d1","286b86dc29b0d2b3","1aecb61b250d183c"],[]]},{"id":"6c4946b0883121e4","type":"api-current-state","z":"5e38a40b1ab38ea9","name":"Warung AN","server":"a1aba8eb.bfd618","version":3,"outputs":2,"halt_if":"on","halt_if_type":"str","halt_if_compare":"is","entity_id":"input_boolean.dwd_warnungen","state_type":"str","blockInputOverrides":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"entity"}],"for":"0","forType":"num","forUnits":"minutes","override_topic":false,"state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","x":530,"y":1570,"wires":[["8f7ae4cb752b0e62","6bc8c5980fc2e227"],[]]},{"id":"bc1430f835c93119","type":"change","z":"5e38a40b1ab38ea9","name":"Text formatieren","rules":[{"t":"set","p":"payload","pt":"msg","to":"$trim($replace(payload, /\\(.*?\\)/, ''))","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":754,"y":1464,"wires":[["b88ef7b916081c30"]]},{"id":"bd6fc7452f68b534","type":"trigger","z":"5e38a40b1ab38ea9","name":"1 s","op1":"","op2":"","op1type":"nul","op2type":"pay","duration":"1","extend":true,"overrideDelay":true,"units":"s","reset":"stop","bytopic":"all","topic":"topic","outputs":1,"x":980.857177734375,"y":1330.5714111328125,"wires":[["b88ef7b916081c30"]]},{"id":"7480f49c448fbe1e","type":"function","z":"5e38a40b1ab38ea9","name":"Message","func":"let payload = {\n    \"message\": \"Es liegt eine Wetterwarnung vor: \" + (msg.data.attributes.warning_2_description)}\nreturn { payload };","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":528,"y":1442,"wires":[["bc1430f835c93119"]]},{"id":"ebca405674658eca","type":"function","z":"5e38a40b1ab38ea9","name":"Message","func":"let payload = {\n    \"message\": \"Es liegt eine Wetterwarnung vor: \" + (msg.data.attributes.warning_3_description)}\nreturn { payload };","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":528,"y":1482,"wires":[["bc1430f835c93119"]]},{"id":"c59384348d7de1a7","type":"function","z":"5e38a40b1ab38ea9","name":"Message","func":"let payload = {\n    \"message\": \"Es liegt eine Wetterwarnung vor: \" + (msg.data.attributes.warning_4_description)}\nreturn { payload };","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":528,"y":1522,"wires":[["bc1430f835c93119"]]},{"id":"3c4d607a6e971d16","type":"function","z":"5e38a40b1ab38ea9","name":"Message","func":"let payload = {\n    \"message\": \"Es liegt eine Wetterwarnung vor: \" + (msg.data.attributes.warning_2_description)}\nreturn { payload };","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":1537.9999389648438,"y":1540.000018119812,"wires":[["cb39e3bf992fdb81"]]},{"id":"4abd905a73757868","type":"function","z":"5e38a40b1ab38ea9","name":"Message","func":"let payload = {\n    \"message\": \"Es liegt eine Wetterwarnung vor: \" + (msg.data.attributes.warning_3_description)}\nreturn { payload };","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":1537.9999389648438,"y":1580.000018119812,"wires":[["cb39e3bf992fdb81"]]},{"id":"51bbf82bdf91cb54","type":"function","z":"5e38a40b1ab38ea9","name":"Message","func":"let payload = {\n    \"message\": \"Es liegt eine Wetterwarnung vor: \" + (msg.data.attributes.warning_4_description)}\nreturn { payload };","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":1537.9999389648438,"y":1620.000018119812,"wires":[["cb39e3bf992fdb81"]]},{"id":"cb39e3bf992fdb81","type":"change","z":"5e38a40b1ab38ea9","name":"Text formatieren","rules":[{"t":"set","p":"payload","pt":"msg","to":"$trim($replace(payload, /\\(.*?\\)/, ''))","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":1739.9999389648438,"y":1556.000018119812,"wires":[["010080c483544834"]]},{"id":"8e3d0fd006f1b6f9","type":"switch","z":"5e38a40b1ab38ea9","name":"Warnung","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"1","vt":"num"},{"t":"eq","v":"2","vt":"num"},{"t":"eq","v":"3","vt":"num"},{"t":"eq","v":"4","vt":"num"}],"checkall":"false","repair":false,"outputs":4,"x":1378,"y":1570,"wires":[["178bb5445060d660"],["3c4d607a6e971d16"],["4abd905a73757868"],["51bbf82bdf91cb54"]]},{"id":"1bc9613086394754","type":"switch","z":"5e38a40b1ab38ea9","name":"Warnung","property":"payload","propertyType":"msg","rules":[{"t":"gt","v":"0","vt":"num"}],"checkall":"false","repair":false,"outputs":1,"x":342,"y":1332,"wires":[["83abbd668e554cc6"]]},{"id":"a1aba8eb.bfd618","type":"server","name":"Home Assistant","version":5,"addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true,"heartbeat":false,"heartbeatInterval":30,"areaSelector":"friendlyName","deviceSelector":"friendlyName","entitySelector":"friendlyName","statusSeparator":"at: ","statusYear":"hidden","statusMonth":"short","statusDay":"numeric","statusHourCycle":"h23","statusTimeFormat":"h:m","enableGlobalContextStore":true},{"id":"1dc2bfdd622bc8d9","type":"alexa-remote-account","name":"ALEXA","authMethod":"proxy","proxyOwnIp":"192.168.178.72","proxyPort":"3456","cookieFile":"/homeassistant/amazon.txt","refreshInterval":"3","alexaServiceHost":"layla.amazon.de","pushDispatchHost":"","amazonPage":"amazon.de","acceptLanguage":"de-DE","onKeywordInLanguage":"on","userAgent":"","autoInit":"on"}]

Damit kann ich erstmal gut leben. Muss zum vollständigen testen auf die nächste “echte” Wetterwarung warten. :wink:

So ich hab mal Deine Anforderungen angeschaut - und es geht Dir ja nur um die Warnmeldungen . Ich habe das jetzt alles in 2 Regeln gepackt - dann kannst Dir die Switch node und die function Nodes sparen.

Ich habe jetzt mit einem regulären Ausdruck einen Filter eingebaut.

Sprich mit Level 0 wird keine Warnung ausgegeben und in der 2. Regel wird keine Warnung - dann in “Keine Warnung” übersetzt.

Damit kannst Dir die switch und die ganzen funktion Nodes sparen und auch das Entferner der im Klammer stehenden Textes habe ich gleich mit übernommen. Das ist der blau markierte Teil - den kannst auch wieder weg nehmen, wenn Du das lieber in einer eigenen Change Node haben willst.

Hier mal zum Test und ggf. zur Verwendung:

[{"id":"ba6f013fdc3c6dd0","type":"inject","z":"7e6af0015415146d","name":"Warnung Level 1","props":[{"p":"data.attributes","v":"{\"warning_1_description\":\"Es liegt eine Wetterwarnung vor: Es treten Windböen mit Geschwindigkeiten zwischen 50km/h (14 m/s, 28 kn, Bft 7) und 60 km/h (17 m/s, 33 kn, Bft 7) anfangs aus wehster Richtung auf.\",\"warning_1_instruction\":\"Instruktrionen bei Level 1\",\"warning_1_parameters\":\"Parameter bei Level 1\",\"warning_1_color\":\"#FFFF00\",\"warning_1_level\":1}","vt":"json"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","x":120,"y":5620,"wires":[["48381a537bb96206"]]},{"id":"aaee58a5840cce86","type":"inject","z":"7e6af0015415146d","name":"Warnung Level 2","props":[{"p":"data.attributes","v":"{\"warning_2_description\":\"Es liegt eine Wetterwarnung vor: Es treten Windböen mit Geschwindigkeiten zwischen 60km/h (14 m/s, 28 kn, Bft 7) und 80 km/h (17 m/s, 33 kn, Bft 7) anfangs aus wehster Richtung auf.\",\"warning_2_instruction\":\"Instruktrionen bei Level 2\",\"warning_2_parameters\":\"Parameter bei Level 2\",\"warning_2_color\":\"#FFA500\",\"warning_2_level\":2}","vt":"json"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","x":120,"y":5660,"wires":[["48381a537bb96206"]]},{"id":"89d457fb63a7348f","type":"inject","z":"7e6af0015415146d","name":"Warnung Level 3","props":[{"p":"data.attributes","v":"{\"warning_3_description\":\"Es liegt eine Wetterwarnung vor: Es treten Windböen mit Geschwindigkeiten zwischen 80km/h (14 m/s, 28 kn, Bft 7) und 120 km/h (17 m/s, 33 kn, Bft 7) anfangs aus wehster Richtung auf.\",\"warning_3_instruction\":\"Instruktrionen bei Level 3\",\"warning_3_parameters\":\"Parameter bei Level 3\",\"warning_3_color\":\"#FF0000\",\"warning_3_level\":3}","vt":"json"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","x":120,"y":5700,"wires":[["48381a537bb96206"]]},{"id":"5fd112a503519f63","type":"inject","z":"7e6af0015415146d","name":"Warnung Level 4","props":[{"p":"data.attributes","v":"{\"warning_4_description\":\"Es liegt eine Wetterwarnung vor: Es treten Windböen mit Geschwindigkeiten mit mehr als 120 km/h (???) anfangs aus wehster Richtung auf.\",\"warning_4_instruction\":\"Instruktrionen bei Level 4\",\"warning_4_parameters\":\"Parameter bei Level 4\",\"warning_4_color\":\"#800080\",\"warning_4_level\":4}","vt":"json"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","x":120,"y":5740,"wires":[["48381a537bb96206"]]},{"id":"c921d0a93655d1ec","type":"inject","z":"7e6af0015415146d","name":"Warnung Level 0","props":[{"p":"data.attributes","v":"{\"warning_0_description\":\"Wird nicht benutzt\",\"warning_0_instruction\":\"Wird nicht benutzt\",\"warning_0_parameters\":\"Wird nicht benutzt\",\"warning_0_color\":\"#008000\",\"warning_0_level\":0}","vt":"json"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","x":120,"y":5580,"wires":[["48381a537bb96206"]]},{"id":"49c25908be3e768e","type":"change","z":"7e6af0015415146d","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"$lookup(\t   data.attributes,\t   ($keys(data.attributes)~>/.*[1-4]_description/).match\t)~>$replace(/\\(.*?\\)/, '')~>$trim","tot":"jsonata"},{"t":"set","p":"payload","pt":"msg","to":"payload ? \"Es liegt eine Wetterwarnung vor: \" & payload : \"Keine Warnung\"","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":470,"y":5660,"wires":[["8f5f996503101c45"]]},{"id":"8f5f996503101c45","type":"debug","z":"7e6af0015415146d","name":"Nachrichtentext","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":720,"y":5660,"wires":[]},{"id":"48381a537bb96206","type":"junction","z":"7e6af0015415146d","x":300,"y":5660,"wires":[["49c25908be3e768e"]]}]

Nachtrag: Das mit dem Satz: Das ist eine Wetterwarnung ist ggf. doppelt gemoppelt. Ich dachte nur - ich hätte gesehen, dass das in der function Node hinzugefügt wurde.

Falls das in der original Meldung bereits drin ist, dann halt die 2. Regel ändern.

1 „Gefällt mir“