UPGRADE IP 9 verfügbar!
Timberwolf VISU jetzt mit NEUEM Layout Editor
Freie Anordnung, Reihenfolge und Größe der Widgets - viele weitere Verbesserungen
Infos im Wiki: https://elabnet.atlassian.net/l/cp/06SeuHRJ

NEU! Insider & Leistungsmerkmale FÜR ALLE freigeschaltet
Damit kann nun jeder das Upgrade vornehmen und VISU & IFTTT testen. Alle Info hier: viewtopic.php?f=8&t=5074

[Gelöst] Wie zwei Strings vergleichen

Informationen und Diskussionen über Logik-Engine und Logik-Editor
Forumsregeln
  • Denke bitte an aussagekräftige Titel und gebe dort auch die [Firmware] an. Wenn ETS oder CometVisu beteiligt sind, dann auch deren Version
  • Bitte mache vollständige Angaben zu Deinem Server, dessen ID und dem Online-Status in Deiner Signatur. Hilfreich ist oft auch die Beschreibung der angeschlossener Hardware sowie die verwendeten Protokolle
  • Beschreibe Dein Projekt und Dein Problem bitte vollständig. Achte bitte darauf, dass auf Screenshots die Statusleiste sichtbar ist
  • Bitte sei stets freundlich und wohlwollend, bleibe beim Thema und unterschreibe mit deinem Vornamen. Bitte lese alle Regeln, die Du hier findest: https://wiki.timberwolf.io/Forenregeln

blaubaerli
Reactions:
Beiträge: 2307
Registriert: Sa Sep 15, 2018 10:26 am
Wohnort: Kerpen
Hat sich bedankt: 884 Mal
Danksagung erhalten: 677 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: 2181
Registriert: So Aug 12, 2018 1:38 pm
Wohnort: Karlsruher Raum
Hat sich bedankt: 481 Mal
Danksagung erhalten: 889 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: 2181
Registriert: So Aug 12, 2018 1:38 pm
Wohnort: Karlsruher Raum
Hat sich bedankt: 481 Mal
Danksagung erhalten: 889 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: 2307
Registriert: Sa Sep 15, 2018 10:26 am
Wohnort: Kerpen
Hat sich bedankt: 884 Mal
Danksagung erhalten: 677 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

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

#15

Beitrag von Dragonos2000 »

Bin gerade wieder in dem Thema "vergleichen zweier Strings" aufgelaufen...geht noch nicht,oder? Ich hab' keinen Ansatz wie...
Wenn es da nicht bereits eine andere Möglichkeit gibt, würde ich etwas in folgender Art vorschlagen:
["Compare","$Input_Wert","Such_String","$Output",Mode]

$Ouput (bool):
false = mismatch/nicht enthalten
true = match / enthalten

Mode (integer):
0 = exakte Übereinstimmung
1= enthält Suchstring an beliebiger Stelle

Meinungen? Finde es eigentlich relativ wichtig in Bezug auf MQTT und HTTP API, oder habe nur ich den Bedarf ?
Zuletzt geändert von Dragonos2000 am Di Jan 18, 2022 8:49 pm, insgesamt 1-mal geändert.
Lg
Jochen
____________________________________________________________
TW 2600 #188
VPN offen, Zugriff jederzeit, Experimente jederzeit, Reboot jederzeit

danik
Reactions:
Beiträge: 391
Registriert: Mo Sep 10, 2018 8:40 pm
Hat sich bedankt: 256 Mal
Danksagung erhalten: 266 Mal

#16

Beitrag von danik »

Dragonos2000 hat geschrieben: Di Jan 18, 2022 8:48 pm Meinungen? Finde es eigentlich relativ wichtig in Bezug auf MQTT und HTTP API, oder habe nur ich den Bedarf ?
Hi, sehe da auch Bedarf mit Verbreitung der genannten Punkte von Dir. Auch das Senden von String in Logiken. Geht m.E. ohne Custom-Logik noch nicht.

Gruss
Dani
TW 3500L (#882) + TW 950Q (#321, im Moment inaktiv), VPN offen, Reboot nach Rücksprache

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

#17

Beitrag von Dragonos2000 »

Es hätte auch den Vorteil, dass man sich notfalls auch Custom Typkonvertierungen erstellen könnte, wenn die System seitige automatische Konvertierung nicht greift...
Lg
Jochen
____________________________________________________________
TW 2600 #188
VPN offen, Zugriff jederzeit, Experimente jederzeit, Reboot jederzeit

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

#18

Beitrag von Dragonos2000 »

Jens hatte ja auch einen ähnlichen Vorschlag gemacht. Zusammengefasst haben wir folgende zwei konkreten Vorschläge, die sich nur geringfügig unterscheiden (Variablen habe ich aus den original Vorschlägen übernommen, denke sollte selbsterklärend sein):

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

Beim Suchmodus die Ansätze:
  1. Exakte Übereinstimmung
  2. Suchstring enthalten
  3. Groß-/Kleinschreibung ignorieren
3) macht wohl am ehesten mit 2) Sinn und ich würde diese daher stets kombinieren, also insgesamt wieder 2 Varianten:
  1. Exakte Übereinstimmung
  2. Suchstring enthalten und Groß-/Kleinschreibung dabei ignorieren
Ließe sich m.E. als fertiger Logikbaustein bereitstellen, so daß auch diejenigen es nutzen könnten, die keine Affinität zu Custom-Logiken haben.
Welchen der beiden Vorschläge haltet Ihr für sinnvoller? Mir würde der erste reichen und der wäre sicherlich auch einfacher zu implementieren.
Zuletzt geändert von Dragonos2000 am Mi Jan 19, 2022 12:48 pm, insgesamt 1-mal geändert.
Lg
Jochen
____________________________________________________________
TW 2600 #188
VPN offen, Zugriff jederzeit, Experimente jederzeit, Reboot jederzeit

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

#19

Beitrag von Dragonos2000 »

Hmm...die Resonanz ist doch sehr verhalten- da lohnt es nicht, einen FR drauß zu machen und es ist verständlich, wenn ElabNet sich in diesem Thema nicht reinhängt.

Anscheinend hab nur ich den Bedarf oder der Usecase ist nicht transparent.
Lg
Jochen
____________________________________________________________
TW 2600 #188
VPN offen, Zugriff jederzeit, Experimente jederzeit, Reboot jederzeit

StefanW
Elaborated Networks
Reactions:
Beiträge: 9689
Registriert: So Aug 12, 2018 9:27 am
Wohnort: Frauenneuharting
Hat sich bedankt: 4831 Mal
Danksagung erhalten: 7632 Mal
Kontaktdaten:

#20

Beitrag von StefanW »

Hallo Jochen,

die Erfahrung zeigt, das manches braucht, bis es breiter angenommen wird. Es sind gerade eine Menge Nutzer mit den CometVisu Tests beschäftigt.

Ich beobachte den Thread und die Ideen durchaus. Es kommt auch demnächst etwas zum Thema "String" in die Logik.

lg

Stefan
Stefan Werner
Product Owner für Timberwolf Server, 1-Wire und BlitzART
Bitte WIKI lesen. Allg. Support nur im Forum. Bitte keine PN
Zu Preisen, Lizenzen, Garantie, HW-Defekt an service at elabnet dot de

Link zu Impressum und Datenschutzerklärung oben.
Antworten

Zurück zu „Logikengine & Logik-Editor“