NEUHEIT! Ab sofort MQTT mit dem Timberwolf Server!
Verfügbar für alle Versionen mit der Insider Preview 5 zur Version 2.0. Infos: viewtopic.php?f=8&t=2846

[DISKUSSION] Wie zwei Strings vergleichen

Informationen und Diskussionen über Logik-Engine und Logik-Editor

blaubaerli
Reactions:
Beiträge: 1145
Registriert: Sa Sep 15, 2018 10:26 am
Hat sich bedankt: 365 Mal
Danksagung erhalten: 262 Mal

#11

Beitrag von blaubaerli »

Hallo zusammen,

leider kommt hier die "Diskussion" ja nicht wirklich in Schwung.

Mir fehlt im Moment schlicht überhaupt die Möglichkeit auf spezifische Inhalte eines Levels vom Datentyp "string" zu reagieren.

Speziell im neuen MQTT-Umfeld läuft viel über "Text"-Informationen. Die anderen Datentypen scheinen mir in meinen aktuellen Tests mal versorgt. Mit einer Custom-Logik bin ich auch in der Lage, mir "Strings" zu generieren, die ich dann beim "Publish" nutzen kann.

Aber das Dekodieren eines beim "Subscribe" erhaltenen Strings klappt halt schlicht aktuell bei mir nicht (Ist das system, oder jensbedingt? :confusion-scratchheadyellow:). Ein Shelly-Fensterkontakt liefert "open" oder "close". Bisher keine Chance. Auch Rückmeldeobjekte lassen sich da im Moment nicht abbilden.

Als Einstiegslösung schwebt mir da derzeit z.B. ein neues Modul der folgenden Form vor:

["GetEntry","$Input_Wert","$Suchmodus",["String_1","String_2",...,"String_n"], "$Output"]

Wobei $Output dann 0 wenn der über "$Input_Wert" gelieferte Wert nicht gefunden wurde und 1,2,n bei entsprechendem Fund.
"$Suchmodus" dann noch für solche Optionen großkleinschriftneutrale Suche oder eben nicht.

Der Ansatz hat allerdings den Hinkefuß, dass all diejenigen die Strings dekodieren müssen, sich dann womöglich zunächst mit den Custom-Logiken beschäftigen müssten.

Denkt mal drüber nach und über Feedback und einen Diskussionsbeginn würde ich mich freuen. :handgestures-thumbsup:

Beste Grüße
Jens
Zuletzt geändert von blaubaerli am Fr Jun 04, 2021 7:43 pm, insgesamt 2-mal geändert.
wiregate1250 & timberwolf168 (2600er), VPN offen, Reboot nach Vereinbarung

Ersteller
Dragonos2000
Reactions:
Beiträge: 1541
Registriert: So Aug 12, 2018 1:38 pm
Wohnort: Karlsruher Raum
Hat sich bedankt: 296 Mal
Danksagung erhalten: 600 Mal

#12

Beitrag von Dragonos2000 »

Ich hab mich da mangels Zeit momentan nicht weiter drin vertiefen können, daher kam von mir nichts mehr. (es stehen gerade so spannende Dinge, wie Parkett schleifen an)...
Dein Ansatz trifft recht gut, was ich im Sinn hatte, geht in der Funktionalität mit den Suchmodi aber auch schon darüber hinaus. Mir hätte ein
["Compare","$Input_Wert","Such_String","$Output"]
schon genügt, wobei das Ergebnis nur 0 oder 1 sein kann.

Vom Einsatz her sehe ich es wie Du: Speziell mit MQTT ist ein solcher Baustein ein "Muss", um mit den Daten umgehen zu können, weil da viel Strings kommen.
Lg
Jochen
____________________________________________________________
TW 2600 #188
VPN offen, Zugriff jederzeit, Experimente jederzeit, Reboot jederzeit

Ersteller
Dragonos2000
Reactions:
Beiträge: 1541
Registriert: So Aug 12, 2018 1:38 pm
Wohnort: Karlsruher Raum
Hat sich bedankt: 296 Mal
Danksagung erhalten: 600 Mal

#13

Beitrag von Dragonos2000 »

blaubaerli hat geschrieben: Mi Jun 02, 2021 9:04 pm Entweder habe ich noch ein totales Brett vor dem Kopf, oder es klappt wirklich noch nicht.
Der Ansatz nutzt halt den Limiter. Will nicht. Egal, ob ich den Level "$In_Compare" nun als Input definiere und dann einen String-Parameter mitgebe, oder ob ich den nur intern definiere und nicht als Input rausführe.
Hast das schon irgendwer funktionstüchtig umgesetzt? :confusion-scratchheadyellow:
Ne wenig Möglichkeit gefunden, Strings in einer Logik zu verarbeiten...
Mein Usecase mit dem Sting als Parameter war der, dass ich mir einen Baustein gebaut hab', der aus boolschen Zuständen Textmeldungen macht. Und diese Texte habe ich per Paramter gesetzt. Der verwendte Multiplexer konnte damit umgehen...

Einen anderen Usecase habe ich noch mit Cron-Definitionen: Diese statt im Code per Parameter einstellbar zu machen. Habe ich aber noch nicht gestestet.
Lg
Jochen
____________________________________________________________
TW 2600 #188
VPN offen, Zugriff jederzeit, Experimente jederzeit, Reboot jederzeit

blaubaerli
Reactions:
Beiträge: 1145
Registriert: Sa Sep 15, 2018 10:26 am
Hat sich bedankt: 365 Mal
Danksagung erhalten: 262 Mal

#14

Beitrag von blaubaerli »

Hallo Jochen,
Dragonos2000 hat geschrieben: Fr Jun 04, 2021 11:41 pm Ne wenig Möglichkeit gefunden, Strings in einer Logik zu verarbeiten...
Mein Usecase mit dem Sting als Parameter war der, dass ich mir einen Baustein gebaut hab', der aus boolschen Zuständen Textmeldungen macht. Und diese Texte habe ich per Paramter gesetzt. Der verwendte Multiplexer konnte damit umgehen...
Strings für den Publish zusammenzubauen, bedient die eine Richtung. Das geht aktuell mit Bordmitteln.

In der Knowledge Base - 4.6.6 Verwendung von Standard Logikbausteinen in Custom Logik]Knowledgebase[/url] haben wir ja eigentlich ein Hilfsmittel mit dem auch der Stringvergleich ggf. möglich sein sollte.
05-06-_2021_20-45-28.jpg
Das scheint aber mit Strings eben nicht zu klappen. Ich weiß nicht, ob das ein BUG :character-bowser: ist der gefixt gehört. Aber das bedürfte der Analyse/Prüfung durch ElabNET.

Beste Grüße
Jens
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Zuletzt geändert von blaubaerli am Sa Jun 05, 2021 8:52 pm, insgesamt 1-mal geändert.
wiregate1250 & timberwolf168 (2600er), VPN offen, Reboot nach Vereinbarung
Antworten

Zurück zu „Logikengine & Logik-Editor“