Hallo zusammen,
ich bin neu hier und erkunde die Möglichkeiten.
Bzgl. der Logikbausteine fehlen mir String-Funktionen sehr!
(Ich könnte mir auch vorstellen, statt in Logikbausteinen, solche Anpassungen/Zerlegungen auch als Nachverarbeitung im Objektmanager anzubieten (vor der Zuführung zu Zielen wie KNX oder Logiken).)
Ich bitte um Nachsicht, wenn einige Bezeichnungen von mir nicht ganz getroffen sind - ich habe den Timberwolf erst seit kurzem im Einsatz.
Hier ganz kontrete Anwendungsbeispiele:
1) Abruf der aktuellen Raumtemperaturen via REST (Steuerung, die noch zwecks Heizung verwendet wird)
- Rückgabewert ist ein CSV-String in den JSON-Elementen: Temperatur IST;Temperatur SOLL;Ventilöffnung;Betriebsmodus;Korrektur
- Hier müsste ich den String bei den Semikolons zerteilen und dann die einzelnen Werte weiterverarbeiten
- Den Wert zum Betriebsmodus würde ich gerne zusätzlich umwandeln in einen sprechenden Text: "Komfortbetrieb", "Absenkbetrieb",..
2) Abruf der aktuellen Werte meiner KWL (Pluggit) via ModbusTCP
- Der Betriebsmodus kommt als UINT. Würde sie gerne in einen sprechenden Text umwandeln und auf den KNX-Bus schicken, zB: "Bedarfsmodus", "Wochenmodus",...
Zusatzfrage: Können nach Senden eines Wertes alle Werte erneut abgerufen werden (ein kompletter Trigger durch Objektänderung, zusätzlich zum periodischem Abruf, vgl. HTTP-API)?
- Hintergrund: Durch Setzen eines Betriebsmodus können sich auch andere Werte als nur der Betriebsmodus ändern (Bypass, RPM,..)
3) Einlesen der aktuellen Werte meiner Enthärtungsanlage (Grünbeck) via MQTT:
- Der Wert des MQTT-Topics zum Salzverbrauch ist ein JSON-String (mit mehreren Details darin) - diesen würde ich gerne einem (weiteren) Logikbaustein zuführen und weiterverarbeiten.
4) Verbinden von mehreren Strings
- Mischung aus variablen Eingangswerten und vorgegebenen Strings
Viele Grüße,
Florian
KNX Data Secure Unterstützung
für KNX Logger und KNX Busmonitor
KNX Diagnose Monitor, Import des ETS Projektes deutlich beschleunigt, Suche in der Navigation
Mehr Informationen dazu hier im Forum
Insider Version 6 zur 4.5 jetzt für alle Mitglieder des Insider Clubs installierbar
Alle Infos zum Update im Timberwolf Wiki
[DISKUSSION] String-Funktionen
-
- Elaborated Networks
- Reactions:
- Beiträge: 10702
- Registriert: So Aug 12, 2018 9:27 am
- Wohnort: Frauenneuharting
- Hat sich bedankt: 5303 Mal
- Danksagung erhalten: 8685 Mal
- Kontaktdaten:
Hallo Florian,
==> Konkrete Beispiele helfen uns, also bitte mal das ganze JSON posten bitte
lg
Stefan
Ja, mit den neuen Möglichkeiten über Modbus, MQTT und Rest-API kommt hier Bedarf auf, wir arbeiten auch daran.
Ja, der Timberwolf Server ist dahingehend ausgelegt, dass man möglichst wenig von der Logik in Anspruch nehmen muss, weil die meisten Dinge entweder automatisch funktionieren oder in den Subsystemen gelöst sind.
Ja, es steht auf unserer ToDo Liste, dass wir Arrays in JSON noch unterstützen wollen bei Zerlegung (und auch beim Schreiben)
==> Konkrete Beispiele helfen uns, also bitte mal das ganze JSON posten bitte
Ja, verstanden, ein Mapping-Feature haben wir auch auf der Liste, sollte aber mit der Logik bereits funktionieren
Ja, das gleiche Thema, steht auch auf der Liste. Software wird eben nie fertig
Schreiben per Trigger geht schon, Lesen auf Trigger steht auf der Liste
Ist das Thema ArrayKFloo hat geschrieben: ↑Mo Jan 24, 2022 3:48 pm3) Einlesen der aktuellen Werte meiner Enthärtungsanlage (Grünbeck) via MQTT:
- Der Wert des MQTT-Topics zum Salzverbrauch ist ein JSON-String (mit mehreren Details darin) - diesen würde ich gerne einem (weiteren) Logikbaustein zuführen und weiterverarbeiten.
Ist bereits in Entwicklung
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.
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.
-
- Reactions:
- Beiträge: 111
- Registriert: Di Jan 04, 2022 10:14 pm
- Hat sich bedankt: 65 Mal
- Danksagung erhalten: 55 Mal
Vorweg: Das mit dem MQTT/Grünbeck möchste ich etwas relativieren. Es ist vom Hersteller geplant, Anlagen direkt via MQTT einbinden zu können. Aktuell läuft das indirekt via iobroker und MQTT.
Hallo Stefan,
vielen Dank für deine Antwort - das hört sich ja ganz großartig an!
Ich finde es wirklich toll, dass Nutzer sich direkt mit dem Hersteller austauschen können.
Hier zwei JSON-Strings:
Raumtemperaturen:
(Temperatur IST;Temperatur SOLL;Ventilöffnung;Betriebsmodus;Korrektur)
Energiekosten:
(Act.power;Energy today;Energy month;Energy sum;Power max.;Unit energy;Unit power;Energy today 0-6;6-12;12-18;18-24;Energy yesterd. 0-6;6-12;12-18;18-24;1=Act.Power available)
Ich kann mir vorstellen, dass der Hersteller das einfach unschön implementiert hat.
Aber ich denke, es kommt durchaus vor, dass manchmal mehrere Stringverarbeitungen hintereinander durchgeführt werden müssen, zB. CSV in JSON oder JSON in MQTT.
Viele Grüße,
Florian
Hallo Stefan,
vielen Dank für deine Antwort - das hört sich ja ganz großartig an!
Ich finde es wirklich toll, dass Nutzer sich direkt mit dem Hersteller austauschen können.
Hier zwei JSON-Strings:
Raumtemperaturen:
(Temperatur IST;Temperatur SOLL;Ventilöffnung;Betriebsmodus;Korrektur)
{ "item0": { "sumstate": { "value": "22.20000076293945;22.00;41.44;8;1;0.00;0;" } }, "item1": { "sumstate": { "value": "23.10000038146973;18.00;0.00;16;1;1.50;0;" } }, "item2": { "sumstate": { "value": "21.60000038146973;21.00;1.72;8;1;-1.00;0;" }(gekürzt - sind noch weitere items)
}
Energiekosten:
(Act.power;Energy today;Energy month;Energy sum;Power max.;Unit energy;Unit power;Energy today 0-6;6-12;12-18;18-24;Energy yesterd. 0-6;6-12;12-18;18-24;1=Act.Power available)
{ "item0": { "sumstate": { "value": "0.48;5.10;419.31;27879.24;10.00;kWh;kW;2233;2869;0;0;2066;6875;10065;3630;1;" } }, "item1": { "sumstate": { "value": "13.70;39.00;1206.00;57008.00;25.00;kWh;kW;11000;28000;0;0;7000;27000;18000;11000;1;" } } }
Ich kann mir vorstellen, dass der Hersteller das einfach unschön implementiert hat.
Aber ich denke, es kommt durchaus vor, dass manchmal mehrere Stringverarbeitungen hintereinander durchgeführt werden müssen, zB. CSV in JSON oder JSON in MQTT.
Viele Grüße,
Florian
Vg, Florian. (TWS 3500XL #1706, VPN geschlossen)
-
- Reactions:
- Beiträge: 378
- Registriert: So Apr 14, 2019 11:12 am
- Hat sich bedankt: 206 Mal
- Danksagung erhalten: 199 Mal
Wenn ich das richtig verstehe, dann würde mir dieses Feature helfen.
Denn ich finde gerade keine Möglichkeit, wie ich mit dem Uhr-Zeit-Modul ein Datum in ein bestimmtes Format bringen kann (für einen HTTP-API-Request --> Abfrage, ob heute Feiertag ist oder nicht).
So würde ich mir das vorstellen (nur exemplarisch; sOutDate ist festgeschrieben, weil ich leider keine Möglichkeit kenne).

Frage: Muss ich hierzu auf obiges Modul warten oder gibt es bereits heute schon andere Möglichkeiten über den TWS?
Mir würde höchstens noch einfallen, über eine Rule in OpenHAB etwas zu erstellen; würde ich aber gerne vermeiden wollen

Grüße, Adi
TWS 2600 ID: 331, VPN geschlossen, Reboot nach Rücksprache
TWS 2600 ID: 331, VPN geschlossen, Reboot nach Rücksprache
-
- Reactions:
- Beiträge: 228
- Registriert: Mo Aug 13, 2018 9:32 pm
- Wohnort: Allgäu
- Hat sich bedankt: 116 Mal
- Danksagung erhalten: 98 Mal
Hallo zusammen,
ich möchte das Thema noch mal aufgreifen und eine Implementierung der folgenden drei String-Funktionen in die Logik anregen.
Funktion 1: Stringlänge ermitteln
- Input: Beliebiger String
- Output: Länge des String als Integer
Funktion 2: String auf ein Zeichen / eine Zeichenkette durchsuchen und neben True/Falls auch die Position / Startposition bezogen auf den Beginn des String zurückgeben.
- Input 1: String
- Input 2: Zeichen / Zeichenkette die gesucht werden soll
- Output 1: Meldung ob Zeichen / Zeichenkette gefunden wurde (true/false)
- Output 2: Position bei der das Zeichen / Zeichenkette gefunden wurde, Zählbeginn ist der String-Start (Integer)
Funktion 3: String an einer vorgegeben Position in zwei Teile teilen, bzw. aus einem String an einer Position ein bestimmtes Stück mit einer definierbaren Länge herausschneiden.
- Input 1: String
- Input 2: Position an der der Ausschnitt beginnen soll
- Input 3: Länge des Ausschnitt (wenn 0 angegeben wird, dann wird der Rest des String ab der Position von Input 2 ausgegeben)
- Output 1: Teilstring / Reststring (wie mit Input 2 und Input 3 definiert)
Evtl. könnte noch ein Error-Händling / Error-Out nützlich sein.
Damit sollten die String-Funktionen der Logik wieder ein Stück vollständiger sein.
Gruß
Ralf
ich möchte das Thema noch mal aufgreifen und eine Implementierung der folgenden drei String-Funktionen in die Logik anregen.
Funktion 1: Stringlänge ermitteln
- Input: Beliebiger String
- Output: Länge des String als Integer
Funktion 2: String auf ein Zeichen / eine Zeichenkette durchsuchen und neben True/Falls auch die Position / Startposition bezogen auf den Beginn des String zurückgeben.
- Input 1: String
- Input 2: Zeichen / Zeichenkette die gesucht werden soll
- Output 1: Meldung ob Zeichen / Zeichenkette gefunden wurde (true/false)
- Output 2: Position bei der das Zeichen / Zeichenkette gefunden wurde, Zählbeginn ist der String-Start (Integer)
Funktion 3: String an einer vorgegeben Position in zwei Teile teilen, bzw. aus einem String an einer Position ein bestimmtes Stück mit einer definierbaren Länge herausschneiden.
- Input 1: String
- Input 2: Position an der der Ausschnitt beginnen soll
- Input 3: Länge des Ausschnitt (wenn 0 angegeben wird, dann wird der Rest des String ab der Position von Input 2 ausgegeben)
- Output 1: Teilstring / Reststring (wie mit Input 2 und Input 3 definiert)
Evtl. könnte noch ein Error-Händling / Error-Out nützlich sein.
Damit sollten die String-Funktionen der Logik wieder ein Stück vollständiger sein.
Gruß
Ralf
Timberwolf Server 2600 #196, VPN offen, Reboot nach Vereinbarung, BM 729