Seite 1 von 1

Rule - Blockly Script mit toString.contains

Verfasst: 9. Apr 2023 19:57
von neuling10
Hallo an die Runde,

ich habe mittlerweile alle meine Rules aufgrund der für mich doch etwas einfacheren Lesbarkeit und vor allem Adaptierbarkeit bei Änderungsbedarf von DSL auf Blockly Rules umgestellt. Das ganze funktioniert bisher soweit so gut bis auf die Abfrage, ob ein String eines Items einen gewissen Text beinhaltet (für die Steuerung div. Geräte mittels Harmony Fernbedienung). In der funktionierenden DSL Rule sieht das recht simpel aus:

Code: Alles auswählen

if(Kamera_Terrasse_IRSteuerung_SAT_Wohnzimmer.state.toString.contains("0x08ZUH837")) {
sendCommand('Kamera_Terrasse_Tilt', 'DECREASE');
}
Nach mehreren Versuchen schaffe ich es jedoch nicht das Statement

Code: Alles auswählen

item.state.toString.contains("Codewort")
in einer Blockly Rule abzubilden. Hat hierzu vielleicht jemand eine Idee, wie das funktioniert?

Grüße
neuling10

Re: Rule - Blockly Script mit toString.contains

Verfasst: 9. Apr 2023 21:13
von Harka
Hi,
wenn find größer 0 ...
Gruß

Re: Rule - Blockly Script mit toString.contains

Verfasst: 9. Apr 2023 22:23
von neuling10
Guten Abend Harka,

danke für den Hinweis :)

Leider hänge ich nun bei einem anderen Problem. Meine Überlegung ist es, dass der Index bei gefundenem Suchwort an eine Variable übergeben wird. Ist die Variable größer Null, wurde das Suchwort im String des Items gefunden.
Nun probiere ich schon diverse Varianten und komme nicht drauf, warum das Suchwort nicht gefunden wird (sicher vorkommende Wörter wie "2023" oder "Time", siehe Log-Einträge) und die Variable/das Item auf 0 bleiben :?:

Bild

Code: Alles auswählen

2023-04-09 22:20:40.997 [INFO ] [org.openhab.rule.1c07ca034b         ] - {"Time":"2023-04-09T21:20:14","IrReceived":{"Protocol":"UNKNOWN","Bits":16,"Hash":"0x5808A5C1"}}
2023-04-09 22:20:40.998 [INFO ] [org.openhab.rule.1c07ca034b         ] - 0
2023-04-09 22:20:40.999 [INFO ] [org.openhab.rule.1c07ca034b         ] - 0

Re: Rule - Blockly Script mit toString.contains

Verfasst: 10. Apr 2023 06:39
von Harka
Huch, jetzt glaube ich (halbwegs) verstanden zu haben wo Du hin willst und wo scheiterte ^^
Du hast ein JSON-Wert, der erst mal mit dem Blockly-toString (in Text - mit Zahnrad - ein Item) vorbehandelt werden muss.
Forum-Find.jpg

Re: Rule - Blockly Script mit toString.contains

Verfasst: 10. Apr 2023 20:22
von neuling10
Ah, vielen Dank @Harka, es läuft nun wie gewünscht :D
Auf das Zahnrad-Symbol wäre ich wohl noch tagelang nicht gekommen...