Seite 3 von 6

Re: Welchen Baustein für Zeitschaltung

Verfasst: So Sep 01, 2019 11:05 am
von DeLaDope
Da sollten man dringend was machen. Das ist aus meiner Sicht die absolute Basis. Evtl kann jemand eine solche Custom Logik in die Datenbank hängen oder in der KB verlinken. Wäre Top.

VG Tobias

Re: Welchen Baustein für Zeitschaltung

Verfasst: So Sep 01, 2019 11:27 am
von Robert_Mini
Ich denke das @S. Kolbinger hier mitliest, darum mache ich mal einen Vorschlag dazu:
Man kann ja die Trigger bereits perfekt setzen und bekommt damit in Kombination mit einem UND eine Zeitschaltuhr für Ein oder Aus.

Den Wunsch nach einer universellen ZSU könnte man relativ schnell erreichen, wenn man zusätzlich ergänzte Trigger-Objekt in der Logik als Level "greifen" könnte. Das geht meines Wissens im Moment nicht, wäre aber manchmal praktisch.

Damit könnte man dann einfach mit einem Multiplexer zwischen ein und aus unterscheiden und dann ein 0 oder 1 auf den Ausgang legen, der ggf. noch ein Mapping bekommen kann - wäre eine coole Sache.

Vielleicht lässt sich damit noch zum Release eine erste massentaugliche ZSU ergänzen.

lg
Robert

Re: Welchen Baustein für Zeitschaltung

Verfasst: So Sep 01, 2019 2:48 pm
von S. Kolbinger
Hallo Tobias,
DeLaDope hat geschrieben: So Sep 01, 2019 11:05 am Da sollten man dringend was machen. Das ist aus meiner Sicht die absolute Basis. Evtl kann jemand eine solche Custom Logik in die Datenbank hängen oder in der KB verlinken. Wäre Top.
Die Logic-Konfiguration für Zeitschaltuhr an sich steht schon:

Code: Alles auswählen

{
    "Level": [
        ["$Start","bool",true],
        ["$CronStringEin","string","0 * * * * *"],
        ["$CronStringAus","string","1 * * * * *"],
        ["$Ausgang","bool",false],
        ["$Ein","bool",false],
        ["$Aus","bool",false],
        ["$Status","integer",0],
        ["$KonstFalse","bool",false],
        ["$VAR<Inhibit?>", "bool", false]
    ],
    "Module": [
        ["Break", ["$VAR<Inhibit?>"]],
        ["Cron","$Start","$Ein",0,"$CronStringEin"],
        ["Cron","$Start","$Aus",0,"$CronStringAus"],
        ["BinaryMultiplexer",["$Ein","$Aus"],"$Status"],
        ["Multiplexer",["$Ausgang","-$KonstFalse","$KonstFalse"],"$Ausgang","$Status"]
    ],
    "Input": [
        ["Start/Stop", "Aktiviert/Deaktiviert die Zeitschaltuhr", "$Start", "c"],
        ["Inhibit", "INHIBIT", "$VAR<Inhibit?>", "u"]
    ],
    "Output": [
        ["Out","Schaltuhr aktiv","$Ausgang","c"]
    ]
}
Was noch fehlt, ist die Unterstützung von String-Variablen im Logik-Editor und speziell die Eingabemaske für den Cron-String, die es schon für die Trigger gibt, auch auf String-Variable anzuwenden.

Aber wer sich ein wenig mit der Cron-Syntax auskennt, kann die obige Custom-Logik (die so zu jeder Minute eine Sekunde lang an ist) nach Wunsch anpassen.

Achtung: Wir verwenden eine um Sekunden erweiterte Cron-Syntax.

Tipp: Eine einfache Logik (z.B. UND) temporär anlegen. Den Trigger Zeit/Zeitpunkt mit Hilfe der Eingabemaske die gewünschten Zeit einstellen. Den Button</> "Generate LE Code" klicken und im unteren Fenster nach dem Cron-String suchen. Ist eigentlich nicht zu übersehen. Diesen String so kopieren und damit "0 * * * * *" bzw. "1 * * * * *" ersetzen.

Re: Welchen Baustein für Zeitschaltung

Verfasst: So Sep 01, 2019 4:55 pm
von DeLaDope
Ok. Probiere ich aus. THX

VG

Re: Welchen Baustein für Zeitschaltung

Verfasst: So Sep 01, 2019 5:57 pm
von dreanaught
Hallo,
wenn ich mich hier einklinken darf.
Ein X-OR mit Ausgang auf (T)imer und Eingang auf (U)pdate und Default-Wert "false", sowie entsprechen Trigger-Definitionen(hier hat mir der Time-Trigger sehr gefallen) dürfte auch funktionieren.
Dafür muss der Ausgang auf den Eingang gemappt werden.
Das geht im Logikeditor leider nicht. Im Objekteditor aber schon :lol:
(Das selbe Objekt in einem anderen Technologiestack z.B. KNX geht wahrscheinlich auch ohne Umweg über den Objekteditor, dass habe ich noch nicht getestet)

Die Idee dahinter ist mit einer Zeitschaltuhr etwas aus/ein schalten zu wollen.
Der X-OR mit default "false" schaltet bei dem ersten Trigger ein(sendet ein true) und bei dem folgenden Trigger wieder aus(sendet ein false).
Mit der Time-Maske im Trigger kann man schön wie bei einer Baumarkt-Zeitschaltuhr die Tage und Uhrzeit auswählen bei der geschaltet werden soll.

Man beachte, befindet man sich zum Zeitpunkt des speicherns der Logik innerhalb der An-Periode muss der default auf True sein, damit beim nächsten Trigger der Wert "false" gesendet wird.


Grüße,
Markus

Re: Welchen Baustein für Zeitschaltung

Verfasst: So Sep 01, 2019 6:14 pm
von DeLaDope
Da steige ich schon nach der zweiten Zeile aus. Danke aber für den Lösungsansatz. 👍Finde das aber alles viel zu kompliziert für solch ein profanes Problemchen.... Das sollte die TW Logik besser können 😉

LG

Re: Welchen Baustein für Zeitschaltung

Verfasst: Mo Sep 02, 2019 9:35 am
von DeLaDope
S. Kolbinger hat geschrieben: So Sep 01, 2019 2:48 pm Hallo Tobias,

....

Tipp: Eine einfache Logik (z.B. UND) temporär anlegen. Den Trigger Zeit/Zeitpunkt mit Hilfe der Eingabemaske die gewünschten Zeit einstellen. Den Button</> "Generate LE Code" klicken und im unteren Fenster nach dem Cron-String suchen. Ist eigentlich nicht zu übersehen. Diesen String so kopieren und damit "0 * * * * *" bzw. "1 * * * * *" ersetzen.
Hallot Stefan,

ich checks nicht. Wenn ich mir Deine Costum Logik erzeuge erhalte ich folgendes:
Bild

Da habe ich nur einen Eingang. Entweder für an oder aus. Wo und wie soll ich da jetzt etwas aus der Und Logik mit Zeittrigger reinkopieren?
Möchte einfach eine Logik mit einem An- und einem Aus- Eingang. Beide über einen Uhrzeit / Wochentag gesteuert. Kann das mal jemand schnell anlegen?
Gibt es eigentlich irgendwo einen Leitfaden, wie man eine eigene Costum Logik erzeugt? Bin etwas frustriert.... :(

Danke!
LG Tobias

Re: Welchen Baustein für Zeitschaltung

Verfasst: Mo Sep 02, 2019 9:42 am
von S. Kolbinger
Gib mir mal ein Beispiel für die Ein- und Ausschaltzeit.

Re: Welchen Baustein für Zeitschaltung

Verfasst: Mo Sep 02, 2019 9:44 am
von DeLaDope
1. Beispiel:
Jeder Wochentag
Ein 17:00Uhr, Aus 22:00Uhr

2.Beispiel:
Nur Montag - Freitag
Ein 08:00Uhr - Aus 17:00Uhr

Danke Stefan!

Re: Welchen Baustein für Zeitschaltung

Verfasst: Mo Sep 02, 2019 11:04 am
von S. Kolbinger
Hallo Tobias,

hier der vorgeschlagene Workaround, bis wir die ZSU-Eingabemaske fertig haben.

In einer temporären Logik kann man beim Trigger "Zeit / Zeitpunkt" die Zeiten über die Maske einstellen:
Bild

Anschließend auf "Generate LE Code" </> klicken und im Code den Cron-String entdecken:

Bild

Nachdem man das für alle vier Zeiten (2 Beispiele mit je einer Ein- und einer Ausschaltzeit) gemacht hat,
kann man das in die Custom-Logiken (je eine pro Beispiel) eintragen.
Das sieht dann so aus.

Custom-Logik für Beispiel 1:

Code: Alles auswählen

{
    "Level": [
        ["$Start","bool",true],
        ["$CronStringEin","string","0 00 17 * * 0,1,2,3,4,5,6"],
        ["$CronStringAus","string","0 00 22 * * 0,1,2,3,4,5,6"],
        ["$Ausgang","bool",false],
        ["$Ein","bool",false],
        ["$Aus","bool",false],
        ["$Status","integer",0],
        ["$KonstFalse","bool",false],
        ["$VAR<Inhibit?>", "bool", false]
    ],
    "Module": [
        ["Break", ["$VAR<Inhibit?>"]],
        ["Cron","$Start","$Ein",0,"$CronStringEin"],
        ["Cron","$Start","$Aus",0,"$CronStringAus"],
        ["BinaryMultiplexer",["$Ein","$Aus"],"$Status"],
        ["Multiplexer",["$Ausgang","-$KonstFalse","$KonstFalse"],"$Ausgang","$Status"]
    ],
    "Input": [
        ["Start/Stop", "Aktiviert/Deaktiviert die Zeitschaltuhr", "$Start", "c"],
        ["Inhibit", "INHIBIT", "$VAR<Inhibit?>", "u"]
    ],
    "Output": [
        ["Out","Schaltuhr aktiv","$Ausgang","c"]
    ]
}
Der Eingang "Start/Stop" ist dafür gedacht, die Zeitschaltuhr von außen scharf zu schalten.
Soll die ZSU immer aktiv sein, kannst du den Eingang "Start/Stop" als Parameter auf True setzen:

Bild

Custom-Logik für Beispiel 2:

Code: Alles auswählen

{
    "Level": [
        ["$Start","bool",true],
        ["$CronStringEin","string","0 00 8 * * 1,2,3,4,5"],
        ["$CronStringAus","string","0 00 17 * * 1,2,3,4,5"],
        ["$Ausgang","bool",false],
        ["$Ein","bool",false],
        ["$Aus","bool",false],
        ["$Status","integer",0],
        ["$KonstFalse","bool",false],
        ["$VAR<Inhibit?>", "bool", false]
    ],
    "Module": [
        ["Break", ["$VAR<Inhibit?>"]],
        ["Cron","$Start","$Ein",0,"$CronStringEin"],
        ["Cron","$Start","$Aus",0,"$CronStringAus"],
        ["BinaryMultiplexer",["$Ein","$Aus"],"$Status"],
        ["Multiplexer",["$Ausgang","-$KonstFalse","$KonstFalse"],"$Ausgang","$Status"]
    ],
    "Input": [
        ["Start/Stop", "Aktiviert/Deaktiviert die Zeitschaltuhr", "$Start", "c"],
        ["Inhibit", "INHIBIT", "$VAR<Inhibit?>", "u"]
    ],
    "Output": [
        ["Out","Schaltuhr aktiv","$Ausgang","c"]
    ]
}