NEU! UPGRADE IP 11 verfügbar!
NEU! LICHTWIDGET - DPT 7.600 - Logik Manager Update - sowie viele weitere Verbesserungen
Infos im Wiki: https://elabnet.atlassian.net/l/cp/B9MUEJj2

Insider & Leistungsmerkmale FÜR ALLE freigeschaltet
Ab sofort kann jeder die neue VISU & IFTTT testen. Info: viewtopic.php?f=8&t=5074

Release V 4 am 15. Juni 2024
Es gibt nun einen fixen Termin. Info: viewtopic.php?f=8&t=5117

NEU! Ausführliches Video Tutorial zur VISU
Jetzt werden alle Fragen beantwortet. Das Video: https://youtu.be/_El-zaC2Rrs

[Erfahrungsbericht] [4.0-IP3] Wert zyklisch senden

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
Antworten
Benutzeravatar

Ersteller
starwarsfan
Reactions:
Beiträge: 1170
Registriert: Mi Okt 10, 2018 2:39 pm
Hat sich bedankt: 754 Mal
Danksagung erhalten: 947 Mal

[4.0-IP3] Wert zyklisch senden

#1

Beitrag von starwarsfan »

Hallo miteinander,

nachdem ich bisher mit dem Logik-Editor nicht warm geworden bin, wollte ich wieder mal einen neuen Versuch starten.

Folgende Problemstellung:

Ich kann mit (fast) allen meinen KNX-Aktoren den Strom der Verbraucher messen. Allerdings kann der Zählerstand nur alle zehn Minuten (oder länger) auf den Bus geschrieben werden. Die Werte sollen via MQTT weiterverarbeitet werden, wo sie jedoch alle 60s refreshed werden müssen. Beim MQTT-Sendefilter steht nun leider, dass diese Funktionalität noch entwickelt wird und daher stellte sich mir die Frage, ob resp. wie ich mit einer Logik den Wert eines (KNX-) Objektes alle 60s nach MQTT publishen kann. :confusion-scratchheadyellow:

Mit Edomi wäre das ein Oszillator und ein Wertauslöser aber ich wollte es endlich mal mit dem Wolf direkt lösen, zumal Edomi an der Stelle überhaupt nicht involviert ist. ;)

Zunächst habe ich mit dem Baustein Taktsignal experimentiert, welcher ja einem Oszillator entspricht. Aber dabei fehlte immer noch ein Filter oder eine Sperre oder etwas in der Art. Dann bin ich eher zufällig über den Baustein Sende Text im Intervall gestolpert. Das sah doch schonmal weit erfolgversprechender aus! Nur leider lässt sich ein String-Input nicht mit einem Float- oder Integer-Objekt verbinden. Hm... :confusion-scratchheadyellow:

Die Lösung war dann allerdings recht einfach: Quelltext dieses Bausteines in eine Custom-Logik kopieren und die String-Eingänge auf Integer ändern. Der Baustein verwendet intern den Multiplexer, welcher seinerseits ja in vier Ausprägungen existiert, eben genau für verschiedene Input-Typen.

Et voila, mein erster Anwendungsfall der TW-Logik-Engine und das auch gleich noch mit Custom-Logik. So kann's gehen. :handgestures-thumbupright:

Wen's interessiert, hier der Code dazu:

Code: Alles auswählen

{
  "Level": [
    [
      "$Run",
      "bool",
      true
    ],
    [
      "$Select",
      "integer",
      0
    ],
    [
      "$Val",
      "integer",
      0
    ],
    [
      "$Clk",
      "bool",
      false
    ],
    [
      "$Clk_Val",
      "integer",
      0
    ],
    [
      "$Period",
      "float",
      600
    ],
    [
      "$VAR<Inhibit?>",
      "bool",
      false
    ]
  ],
  "Module": [
    [
      "Break",
      [
        "$VAR<Inhibit?>"
      ]
    ],
    [
      "Clocksignal",
      "$Run",
      "$Clk",
      "$Period"
    ],
    [
      "Multiplexer",
      [
        "$Val",
        "$Val"
      ],
      "$Clk_Val",
      "$Select"
    ]
  ],
  "Input": [
    [
      "Eingang",
      "Eingangswert",
      "$Val",
      "a"
    ],
    [
      "Intervall in Sekunden",
      "Zeit [s] zwischen Senden (standard 600 Sekunden, 10 Minuten)",
      "$Period",
      "c"
    ],
    [
      "Inhibit",
      "INHIBIT",
      "$VAR<Inhibit?>",
      "u"
    ]
  ],
  "Output": [
    [
      "Ausgang",
      "Per Intervall gesendeter Ausgangswert",
      "$Clk_Val",
      "t"
    ]
  ]
}
Zuletzt geändert von starwarsfan am Do Jul 27, 2023 10:28 pm, insgesamt 1-mal geändert.
Kind regards,
Yves

- TWS 2500 ID:159 (VPN offen, Reboot nach Rücksprache) - PBM ID:401 - TWS 3500 ID:618 (VPN offen, Reboot nach Rücksprache) - ControlPro - ProxMox - Edomi (LXC / Docker) - ... -

Robert_Mini
Reactions:
Beiträge: 3751
Registriert: So Aug 12, 2018 8:44 am
Hat sich bedankt: 1172 Mal
Danksagung erhalten: 2078 Mal

#2

Beitrag von Robert_Mini »

Hallo Yves!

Ja so einfach kann‘s gehen.
Ich würde aber (abhängig was damit passieren soll) den Eingang auf „c“ und den Ausgang auf „ct“ stellen.
Damit wird bei Änderung der Wert sofort übernommen und gesendet, dazwischen zyklisch.

Lg
Robert
Timberwolf Server 2500 / #117 (VPN offen + reboot nach Rückfrage) / zusätzlich: 3500M/#935, 3500L/#1297

gbglace
Reactions:
Beiträge: 3621
Registriert: So Aug 12, 2018 10:20 am
Hat sich bedankt: 1275 Mal
Danksagung erhalten: 1677 Mal

#3

Beitrag von gbglace »

Hi Yves,
Ja auch der Multiplexer kann dafür verwendet werden.
Ganz ohne Customlogik, ginge auch ein Addition oder Multiplikationsbaustein. Ein Eingang der Zählerstand, eine Konstante mit 0 oder 1 je nach Baustein. Und eben auch einmal den Trigger als Eingang mit der gewünschten Zykluszeit.
Grüße
Göran

#1 Timberwolf 2600 Velvet Red TWS #225 / VPN aktiv / Reboot OK
#2 Timberwolf 2600 Organic Silver TWS #438 / VPN aktiv / Reboot OK
#3 PBM 3 Kanäle, #4 Modbus-Extension
Antworten

Zurück zu „Logikengine & Logik-Editor“