NEU! UPGRADE IP 10 verfügbar!
Optimierte Darstellung von VISU Editor und VISU Client - sowie viele weitere Verbesserungen
Infos im Wiki: https://elabnet.atlassian.net/l/cp/8HzePCm3

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 IP 10
Jetzt werden alle Fragen beantwortet. Das Video: https://youtu.be/_El-zaC2Rrs

[TIPP] Einfache, über CometVisu gesteuerte Zeitschaltuhr

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

Ersteller
fechter65
Reactions:
Beiträge: 207
Registriert: Mo Aug 13, 2018 10:44 am
Hat sich bedankt: 195 Mal
Danksagung erhalten: 143 Mal

Einfache, über CometVisu gesteuerte Zeitschaltuhr

#1

Beitrag von fechter65 »

Vor Jahren hatte ich einmal ein Wiregate-Plugin publiziert, welches es erlaubte, zu einer in der CometVisu über einen Slider oder Trigger eingestellten Uhrzeit einen Befehl auszulösen; Details dazu siehe https://knx-user-forum.de/forum/support ... ate-plugin

Die Bedienung in der CometVisu kann frei gestaltet werden. Meine Lösung sieht wie folgt aus (einmal als Infotrigger, einmal als Slider; in der Praxis wird selbstverständlich nur eine Darstellungsform benötigt):
image_35533.png
Diese Darstellung erreicht man über folgenden Code:

Code: Alles auswählen

<mapping name="ZeitAutomatik">
        <entry value="0"><icon name="control_x" color="red"/></entry>
        <entry value="1"><icon name="control_on_off" color="green"/></entry>
      </mapping>


      <styling name="RedGreen">
        <entry value="0">red</entry>
        <entry value="1">green</entry>
      </styling>



        <group name="Licht zeitgesteuert ausschalten">
            <layout colspan="3"/>
            <group name=" "  flavour="black" nowidget="true" >
                <layout rowspan="3" colspan="1"/>
                  <switch on_value="1" off_value="0" mapping="ZeitAutomatik" styling="RedGreen">
                    <layout colspan="1"/>
                    <address transform="DPT:1.001" mode="readwrite">10/0/63</address>
                  </switch>
            </group>
            <group name="Stunde"  flavour="black" nowidget="true">
                <layout colspan="1"/>
                <infotrigger format="%02s:" uplabel="+" downlabel="-" upvalue="1" downvalue="-1" align="right" change="absolute" min="0" max="23" infoposition="middle">
                    <layout colspan="1"/>
                    <address transform="DPT:7.007" mode="readwrite">10/0/61</address>
                </infotrigger>
            </group>
            <group name="Minute"  flavour="black" nowidget="true">
                <layout colspan="1"/>
                <infotrigger format="%02s" uplabel="+" downlabel="-" upvalue="5" downvalue="-5" align="right" change="absolute" min="0" max="55" infoposition="middle">>
                    <layout colspan="1"/>
                            <address transform="DPT:7.006" mode="readwrite">10/0/62</address>
                </infotrigger>
            </group>
        </group>




        <group name="Licht zeitgesteuert ausschalten">
          <layout colspan="3"/>
          <group name=" " flavour="black" nowidget="true">
            <layout colspan="1"/>
            <switch on_value="1" off_value="0" mapping="ZeitAutomatik" styling="RedGreen">
              <layout colspan="1"/>
              <address transform="DPT:1.001" mode="readwrite">8/2/60</address>
            </switch>
          </group>
          <break/>
          <group name="Stunde" flavour="black" nowidget="true">
            <layout colspan="3"/>
            <slide min="0" max="23" step="1" format="%02sh">
              <layout colspan="3"/>
              <address transform="DPT:7.007" mode="readwrite">8/2/61</address>
            </slide>
          </group>
          <group name="Minuten" flavour="black" nowidget="true">
            <layout colspan="3"/>
            <slide min="0" max="55" step="5" format=":%02s">
              <layout colspan="3"/>
              <address transform="DPT:7.006" mode="readwrite">8/2/62</address>
            </slide>
          </group>
        </group>
Die Logik besteht aus folgendem Code:

Code: Alles auswählen

{
  "Module": [
        ["Clocksignal","$Aktiv",0,"$Period"], // Triggert die Logik, sofern diese über $Aktiv eingeschaltet worden ist
        ["Localtime",0,0,0,"$Min","$Hour",0,0,0,0,0,0], // Zeit einlesen
        ["Limiter","$Stunde",0,"$StundeOK",["$Hour","$Hour"]],   //Gleichheit der Stunde prüfen
        ["Limiter","$Minute",0,"$MinuteOK",["$Min","$Min"]],     //Gleichheit der Minute prüfen
        ["And",["$StundeOK", "$MinuteOK"],"$ZeitOK"], //Prüfen, ob Zeit gegeben ist
        ["Break",["-$ZeitOK"]], // Abbruch wenn Zeit nicht gegeben, somit wird nur an Ausgang gesendet, wenn Zeit gegeben ist
        ["Latch","$SendeBefehl","$Out","$true",0] //Sendebefehl an Ausgang übergeben
  ],
  "Input": [
    ["Aktiv", "1 aktiviert die ZSU, 0 deaktiviert", "$Aktiv", "a"], 
    ["Stunde", "Stunde der Uhrzeit, an der Befehl ausgeführt werden soll", "$Stunde", "a"], 
    ["Minute", "Stunde der Uhrzeit, an der Befehl ausgeführt werden soll", "$Minute", "a"],
    ["SendeBefehl", "Befehl, der zu Senden ist, in der Regel als Parameter definiert", "$SendeBefehl", "a"],
    ["Abfrageintervall", "Intervall, in welchem die Logik getriggert werden soll, in der Regel als Parameterdefiniert", "$Period", "a"]
  ],
  "Output": [
    ["Ausgang","","$Out","a"]
  ],
  "Level": [
    ["$true","bool",true],
    ["$false","bool",false],
    ["$Aktiv","bool",false],
    ["$StundeOK","bool",false],
    ["$MinuteOK","bool",false],
    ["$ZeitOK","bool",false],
    ["$Stunde","int",0],
    ["$Minute","int",0],
    ["$Min","int",0],
    ["$Hour","int",0],
    ["$Period","int",31], // Takt, in welchem die Logik getriggert wird
    ["$SendeBefehl","bool",false],
    ["$Out","bool",false]
  ]
}

und führt zu folgender Logikzelle:
Logikzelle.png
In der Logikzelle können namentlich der Sendebefehl (hier false für Ausschalten) und das Abfrageintervall (hier 30 Sekunden, d.h. der Befehl wird von der Logik - zur Sicherheit [Angsthaseneinstellung] zweimal gesendet) als Parameter eingestellt werden. Wichtig: Es handelt sich nicht um einen Cron-gesteuerten Trigger, d.h. er wird nicht zur Sekunde 00 ausgeführt, sondern irgendeinmal, d.h. die die Logik löst nicht zur 0-Sekunde aus, sondern irgendeinmal (oder wie hier zweimal) während der eingestellten Minute.

Für den Datenaustausch zwischen CometVisu und der Logik werden für jede Logik drei GA benötigt:
- Zeitschaltfunktion ein/aus (DPT 1.001)
- Zeitschaltfunktion Stunde (DPT 7.007)
- Zeitschaltfunktion Minute (DPT 7.006)

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

Viel Spass, Diego

Edit: TOLL eingefügt.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Zuletzt geändert von fechter65 am Di Jun 09, 2020 4:02 pm, insgesamt 1-mal geändert.
TW2600 / TW-ID: 87/ VPN offen, booten jederzeit erlaubt
TW2600 / TW-ID: 173/ VPN offen, booten nach Rücksprache

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

#2

Beitrag von StefanW »

Hallo Diego,

danke sehr für die tolle Arbeit und die wunderbaren Logikelemente.

Leider ist die rechtliche Situation wegen dem Urheberrecht für die Nutzer dieser Logikdefinition unklar.

Wir haben eine Lizenz mit dem Namen TOLL (Timberwolf Open Logikblock License") entwickelt. Magst Du Dir mal das folgende ansehen und womöglich den empfohlenen Satz in eine Bemerkung zu Deinen Logikbausteinen schreiben, damit deine Freigabe für die Nutzer klar ist? Du kannst natürlich auch eine eigene Lizenzbedingung formulieren:


TOLL: viewtopic.php?f=65&t=1583

Merci für Deine tolle Arbeit

lg

Stefan
Zuletzt geändert von StefanW am Di Jun 09, 2020 1:21 pm, insgesamt 1-mal geändert.
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“