Seite 1 von 2

Universeller Binär -> String Baustein (bin2txt V2.0)

Verfasst: So Jun 06, 2021 11:27 pm
von Dragonos2000
Mal wieder Zeit für neue Bausteine :) Anbei möchte ich einen konfigurierbaren Baustein mit Euch teilen, mit dem Ihr über einen Binäreingang eine Textmeldung senden könnt.
bin2txt.JPG
Betriebsmodi:
  1. Senden nur bei "False" (Mode 0), dabei wird der für "True" konfigurierte String ignoriert
  2. Senden nur bei "True" (Mode 1), dabei wird der für "False" konfigurierte String ignoriert
  3. Senden sowohl bei "True" als auch bei "False" von unterschiedlichen Texten (Mode 2)
Zusätzlich ist ein Holddown-Timer implementiert, um zu schnelles / kurzes triggern hintereinander zu verhindern.

Eingänge:
  • Trigger Input = Binäreingang, der das Senden auslöst
  • Str2Send for True = String, der bei Empfang von "True" am Trigger Input gesendet werden soll (Betriebsmodi 1 und 2)
  • Str2Send for False = String, der bei Empfang von "False" am Trigger Input gesendet werden soll (Betriebsmodi 0 und 2)
  • Holddown = Zeit in Sekunden, während der ein erneutes Triggern unterdrückt wird
  • Mode = Betriebsmodus (siehe oben)
Einsatzgebiete(bei mir derzeit):
  • Textmeldungen auf Display eines KNX-Bedienelements
  • Abspielen eines bestimmtes Wave-Files auf dem Synohr
  • Sollte sich auch für MQTT gut gebrauchen lassen...

Code: Alles auswählen

{
  "Level": [
	["$ConstFalse","bool",false],
	["$ConstTrue","bool",true],
	["$Send","bool",false],
	["$HoldDown","bool",false],
	["$P_OpMode","integer",0],
	["$P_HoldDownTime","float",1.0],
	["$I_Trigger","bool",false],
	["$P_TextTrue","string","Init-Value"],
	["$P_TextFalse","string","Init-Value"],
	["$O_Text","string","Init-Value"],
	["$VAR<Inhibit?>","bool",false]
  ],
  "_Meta": {
    "Icon": " data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiCiAgIHdpZHRoPSI0OCIKICAgaGVpZ2h0PSI0OCIKICAgdmlld0JveD0iMCAwIDEyLjcgMTIuNyIKICAgdmVyc2lvbj0iMS4xIgogICBpZD0ic3ZnOTk1Ij4KICA8ZGVmcwogICAgIGlkPSJkZWZzOTg5Ij4KICAgIDxsaW5lYXJHcmFkaWVudAogICAgICAgaWQ9ImxpbmVhckdyYWRpZW50ODY3Ij4KICAgICAgPHN0b3AKICAgICAgICAgc3R5bGU9InN0b3AtY29sb3I6IzAwMDAwMDtzdG9wLW9wYWNpdHk6MTsiCiAgICAgICAgIG9mZnNldD0iMCIKICAgICAgICAgaWQ9InN0b3A4NjMiIC8+CiAgICAgIDxzdG9wCiAgICAgICAgIHN0eWxlPSJzdG9wLWNvbG9yOiMwMDAwMDA7c3RvcC1vcGFjaXR5OjA7IgogICAgICAgICBvZmZzZXQ9IjEiCiAgICAgICAgIGlkPSJzdG9wODY1IiAvPgogICAgPC9saW5lYXJHcmFkaWVudD4KICAgIDxsaW5lYXJHcmFkaWVudAogICAgICAgeGxpbms6aHJlZj0iI2xpbmVhckdyYWRpZW50ODY3IgogICAgICAgaWQ9ImxpbmVhckdyYWRpZW50ODY5IgogICAgICAgeDE9IjY2LjI2Njg5OSIKICAgICAgIHkxPSIxMDcuMjgwMzYiCiAgICAgICB4Mj0iODAuMzc0MTUzIgogICAgICAgeTI9IjEwNy4yODAzNiIKICAgICAgIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiAvPgogIDwvZGVmcz4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGE5OTIiPgogICAgPHJkZjpSREY+CiAgICAgIDxjYzpXb3JrCiAgICAgICAgIHJkZjphYm91dD0iIj4KICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3N2Zyt4bWw8L2RjOmZvcm1hdD4KICAgICAgICA8ZGM6dHlwZQogICAgICAgICAgIHJkZjpyZXNvdXJjZT0iaHR0cDovL3B1cmwub3JnL2RjL2RjbWl0eXBlL1N0aWxsSW1hZ2UiIC8+CiAgICAgICAgPGRjOnRpdGxlPjwvZGM6dGl0bGU+CiAgICAgIDwvY2M6V29yaz4KICAgIDwvcmRmOlJERj4KICA8L21ldGFkYXRhPgogIDxnCiAgICAgaWQ9ImxheWVyMSI+CiAgICA8ZwogICAgICAgaWQ9ImxheWVyMS0xIgogICAgICAgdHJhbnNmb3JtPSJtYXRyaXgoMC43NDM2NjQ4NywwLDAsMC43NzAwMzY5NCwtMzYuNDkzODU0LC05OC4xMDE2MTEpIj4KICAgICAgPHRleHQKICAgICAgICAgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIKICAgICAgICAgc3R5bGU9ImZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtdmFyaWFudDpub3JtYWw7Zm9udC13ZWlnaHQ6Ym9sZDtmb250LXN0cmV0Y2g6Y29uZGVuc2VkO2ZvbnQtc2l6ZTo4LjU4MzM4cHg7bGluZS1oZWlnaHQ6MS4yNTtmb250LWZhbWlseTpBcmlhbDstaW5rc2NhcGUtZm9udC1zcGVjaWZpY2F0aW9uOidBcmlhbCwgQm9sZCBDb25kZW5zZWQnO2ZvbnQtdmFyaWFudC1saWdhdHVyZXM6bm9ybWFsO2ZvbnQtdmFyaWFudC1jYXBzOm5vcm1hbDtmb250LXZhcmlhbnQtbnVtZXJpYzpub3JtYWw7Zm9udC12YXJpYW50LWVhc3QtYXNpYW46bm9ybWFsO2ZpbGw6I2ZmOGQyOTtmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MC4yMTQ1ODUiCiAgICAgICAgIHg9IjY1Ljc4NDkyIgogICAgICAgICB5PSIxMTAuMzUyNDQiCiAgICAgICAgIGlkPSJ0ZXh0ODM1IgogICAgICAgICB0cmFuc2Zvcm09InNjYWxlKDAuODExMDMwNDUsMS4yMzI5OTkzKSI+PHRzcGFuCiAgICAgICAgICAgaWQ9InRzcGFuODMzIgogICAgICAgICAgIHg9IjY1Ljc4NDkyIgogICAgICAgICAgIHk9IjExMC4zNTI0NCIKICAgICAgICAgICBzdHlsZT0iZm9udC1zdHlsZTpub3JtYWw7Zm9udC12YXJpYW50Om5vcm1hbDtmb250LXdlaWdodDpib2xkO2ZvbnQtc3RyZXRjaDpjb25kZW5zZWQ7Zm9udC1zaXplOjguNTgzMzhweDtmb250LWZhbWlseTpBcmlhbDstaW5rc2NhcGUtZm9udC1zcGVjaWZpY2F0aW9uOidBcmlhbCwgQm9sZCBDb25kZW5zZWQnO2ZvbnQtdmFyaWFudC1saWdhdHVyZXM6bm9ybWFsO2ZvbnQtdmFyaWFudC1jYXBzOm5vcm1hbDtmb250LXZhcmlhbnQtbnVtZXJpYzpub3JtYWw7Zm9udC12YXJpYW50LWVhc3QtYXNpYW46bm9ybWFsO2ZpbGw6I2ZmOGQyOTtmaWxsLW9wYWNpdHk6MTtzdHJva2Utd2lkdGg6MC4yMTQ1ODUiPklPSU88L3RzcGFuPjwvdGV4dD4KICAgICAgPHRleHQKICAgICAgICAgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIKICAgICAgICAgc3R5bGU9ImZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtdmFyaWFudDpub3JtYWw7Zm9udC13ZWlnaHQ6Ym9sZDtmb250LXN0cmV0Y2g6Y29uZGVuc2VkO2ZvbnQtc2l6ZTo5LjAxNDYycHg7bGluZS1oZWlnaHQ6MS4yNTtmb250LWZhbWlseTpBcmlhbDstaW5rc2NhcGUtZm9udC1zcGVjaWZpY2F0aW9uOidBcmlhbCwgQm9sZCBDb25kZW5zZWQnO2ZvbnQtdmFyaWFudC1saWdhdHVyZXM6bm9ybWFsO2ZvbnQtdmFyaWFudC1jYXBzOm5vcm1hbDtmb250LXZhcmlhbnQtbnVtZXJpYzpub3JtYWw7Zm9udC12YXJpYW50LWVhc3QtYXNpYW46bm9ybWFsO2ZpbGw6IzJiNjBmZjtmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6MC4yMjUzNjYiCiAgICAgICAgIHg9IjY0LjY0MzgzNyIKICAgICAgICAgeT0iMTEwLjQyNTg0IgogICAgICAgICBpZD0idGV4dDgzNS0yIgogICAgICAgICB0cmFuc2Zvcm09InNjYWxlKDAuNzcyMjMxOSwxLjI5NDk0NzgpIj48dHNwYW4KICAgICAgICAgICBpZD0idHNwYW44MzMtMSIKICAgICAgICAgICB4PSI2NC42NDM4MzciCiAgICAgICAgICAgeT0iMTEwLjQyNTg0IgogICAgICAgICAgIHN0eWxlPSJmb250LXN0eWxlOm5vcm1hbDtmb250LXZhcmlhbnQ6bm9ybWFsO2ZvbnQtd2VpZ2h0OmJvbGQ7Zm9udC1zdHJldGNoOmNvbmRlbnNlZDtmb250LXNpemU6OS4wMTQ2MnB4O2ZvbnQtZmFtaWx5OkFyaWFsOy1pbmtzY2FwZS1mb250LXNwZWNpZmljYXRpb246J0FyaWFsLCBCb2xkIENvbmRlbnNlZCc7Zm9udC12YXJpYW50LWxpZ2F0dXJlczpub3JtYWw7Zm9udC12YXJpYW50LWNhcHM6bm9ybWFsO2ZvbnQtdmFyaWFudC1udW1lcmljOm5vcm1hbDtmb250LXZhcmlhbnQtZWFzdC1hc2lhbjpub3JtYWw7ZmlsbDojMmI2MGZmO2ZpbGwtb3BhY2l0eToxO3N0cm9rZS13aWR0aDowLjIyNTM2NiI+VGV4dDwvdHNwYW4+PC90ZXh0PgogICAgPC9nPgogIDwvZz4KPC9zdmc+Cg==",
    "Version": "2.0",
    "_description": "Sending text when triggered"
  },
  "Output": [
	["Text Output","Text output","$O_Text","x"]
  ],
  "Module": [
	["Break",["$VAR<Inhibit?>"]],
	["Multiplexer",["$P_TextFalse","$P_TextTrue"],"$O_Text","$I_Trigger"],
	["Multiplexer",["-$I_Trigger","$I_Trigger","$ConstTrue"],"$I_Trigger","$P_OpMode"],	//Inversion, if "false" shall be the trigger to send the output
	["And",["-$HoldDown", "$I_Trigger"], "$Send"],
	["SendExplicit","$Send","$O_Text",0],
	["Monoflop","$I_Trigger","$ConstFalse","$HoldDown","$P_HoldDownTime",0]
  ],
  "Input": [
	["Trigger Input","Send when trigger receives configured logic level", "$I_Trigger","a"],
	["Str2Send for TRUE","String to be sent, when TRUE is received", "$P_TextTrue","u"],
	["Str2Send for FALSE","String to be sent, when FALSE is received", "$P_TextFalse","u"],
	["HoldDown","Holddown timer in seconds until next output can be sent", "$P_HoldDownTime","u"],
	["Mode","Operation Mode: 0=Send on FALSE, 1=Send on TRUE, 2=Send both", "$P_OpMode","u"],
	["Inhibit","INHIBIT","$VAR<Inhibit?>","u"]
  ]
}
Viel Spaß damit.

Der Schöpfer dieser Custom Logik überträgt die Nutzungsrechte gemäß der TOLL ("Timberwolf Open Logikblock License") die unter https://wrgt.news/TOLL zum Download zur Verfügung steht.

Re: Universeller Binär -> String Baustein (bin2txt V2.0)

Verfasst: Mo Jun 07, 2021 10:07 am
von gbglace
Hmm, denkbar wäre damit auch Text to Speech via Alexa und Co. um die passende Logik Textauswahl nach Events im TWS zu erledigen und nicht im NR wo dann wieder alles erstmal an Triggern ins NR gelangen muss (KNX und neu MQTT).

Sehr schön.

Re: Universeller Binär -> String Baustein (bin2txt V2.0)

Verfasst: Mo Jun 07, 2021 10:20 am
von Dragonos2000
Noch ein Nachtrag, falls jemand den Baustein implementiert und im Doktormodus ansieht:
Aufgrund der Tatsache, dass ich "SendExplicit" verwende, sieht das Verhalten im Dokmode etwas seltsam/falsch aus. Wenn man allerdings auf den KNX Bus schaut seht man dann, dass die Ergebnisse erwartungsgemäß sind.
Während ich das hier schreibe fällt mir da der Umstand ein, wie sich "SendExplicit" mit anderen Technologien verhält: Ob das nur bei KNX funktioniert, oder hoffentlich auch bspw. beim Schreiben Richtung MQTT. Das habe ich noch nicht untersucht/überprüft.

Re: Universeller Binär -> String Baustein (bin2txt V2.0)

Verfasst: Mo Jun 07, 2021 10:42 am
von Robert_Mini
Mein Verständnis ist, dass das sendexplicit verhindert, dass ein Wert an den Dispatcher gesendet wird und damit sollte es für alle Technologien funktionieren.

Lg
Robert

Re: Universeller Binär -> String Baustein (bin2txt V2.0)

Verfasst: Fr Aug 13, 2021 7:41 pm
von ROI111
Hallo,

ich möchte dieLogik nutzen um den String "Waschmaschine fertig" mittels MQTT zum IO_Broker zu senden. Von dort geht es dann weiter an mein Telegram :-)

Leider ist String scheinbar auf 14 Zeichen begrenzt. Ich bekomme, auch im Doktormodus, immer nur Waschmaschine f gesendet.

Habt ihr eine Idee wie man mehr Zeichen senden kann?

Schöne Grüße

Matthias

Re: Universeller Binär -> String Baustein (bin2txt V2.0)

Verfasst: Fr Aug 13, 2021 8:37 pm
von ms20de
ROI111 hat geschrieben: Fr Aug 13, 2021 7:41 pm ich möchte die Logik nutzen um den String "Waschmaschine fertig" mittels MQTT zum IO_Broker zu senden. Von dort geht es dann weiter an mein Telegram :-)

Leider ist String scheinbar auf 14 Zeichen begrenzt. Ich bekomme, auch im Doktormodus, immer nur Waschmaschine f gesendet.
Hallo Matthias,

kommen auch nicht alle Zeichen bei MQTT an? Aktuell gibt es ein Darstellungsproblem, dass die Anzahl der Zeichen in der Timberwolf-Objekt-Darstellung beschränkt ist. Allerdings sollte immer der volle String an das Ziel weitergesendet werden.

Viele Grüße,
Matthias

Re: Universeller Binär -> String Baustein (bin2txt V2.0)

Verfasst: Fr Aug 13, 2021 9:28 pm
von ROI111
ms20de hat geschrieben: Fr Aug 13, 2021 8:37 pm
ROI111 hat geschrieben: Fr Aug 13, 2021 7:41 pm
Hallo Matthias,

kommen auch nicht alle Zeichen bei MQTT an? Aktuell gibt es ein Darstellungsproblem, dass die Anzahl der Zeichen in der Timberwolf-Objekt-Darstellung beschränkt ist. Allerdings sollte immer der volle String an das Ziel weitergesendet werden.

Viele Grüße,
Matthias
Hallo Matthias,

Auch bei MQTT kommt nur der verkürzte String an und wird zum IOBroker weitergeleitet.

Schöne Grüße

Matthias

Re: Universeller Binär -> String Baustein (bin2txt V2.0)

Verfasst: Fr Aug 13, 2021 10:29 pm
von gbglace
ROI111 hat geschrieben: Fr Aug 13, 2021 7:41 pm ich möchte dieLogik nutzen um den String "Waschmaschine fertig" mittels MQTT zum IO_Broker zu senden. Von dort geht es dann weiter an mein Telegram :-)
Es ist zwar etwas OT, aber bis zur Fertigstellung einer Nachrichtenzentrale im TWS nutze ich einen Telegramm Adapter in NR und einen vorgelagerten Funktions-block der als Input eine Zahl 0-255 erwartet. Je Wert werden unterschiedliche Texte gesendet, die sind halt in dem Baustein gecoded.

Bei der Bimmel am Haus sendet der Binäreingang einfach einen Zahlenwert auf den KNX, das geht in via KNX-Ultimate ins NR und auf den Baustein, gleiches geht mit verschiedensten Logiken aus dem TWS. Das was davon nicht auf KNX benötigt wird kann auch per MQTT ans NR und in den Funktionsblock.

Fand ich erstmal eine schlanke Lösung, ein recht einfacher Trigger und dazu ein Mapping auf fixe Texte. Das Mapping aber eben derzeit noch in NR.

Re: Universeller Binär -> String Baustein (bin2txt V2.0)

Verfasst: Fr Aug 20, 2021 10:40 am
von Dragonos2000
@ms20de Hat sich da die 14 Byte Beschränkung vom KNX DPT 16.00x auch für die anderen Technologien eingeschlichen?

Re: Universeller Binär -> String Baustein (bin2txt V2.0)

Verfasst: Fr Aug 20, 2021 4:23 pm
von ms20de
Dragonos2000 hat geschrieben: Fr Aug 20, 2021 10:40 am @ms20de Hat sich da die 14 Byte Beschränkung vom KNX DPT 16.00x auch für die anderen Technologien eingeschlichen?
Wir haben uns aus Performance Gründen entschieden längere Strings im Objektsystem nicht zwischenzuspeichern. Ich weiß nicht ob es ein anderes SmartHome System auf dem Markt gibt, welches so viele Objekt Änderungen pro Sekunde verarbeiten kann wie der Timberwolf Server. Lange Zeichenketten (Theoretisch bis zu mehreren GB) werden aber immer an das Ziel-Objekt weitergegeben, zusätzlich wird jetzt im aktuellen Developmemt-Test auch der Anfang der Zeichenkette zwischengespeichert damit eine einfachere Diagnose möglich ist.

In der Logik gibt es aktuell eine Beschränkung auf 31 Zeichen welche wir noch untersuchen. Bei MQTT, Modbus und HTTP API letztere kommend in der nächsten Insider Version sind lange Zeichenketten möglich die im Normalbetrieb an keine Grenzen stoßen sollten.

Viele Grüße,
Matthias