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

[TIPP] [V4.1] Custom Logik zur Steuerung sonnenstandsabhängig boolean

Hier stellen Foristen und Kunden Ihre EIGENEN Logikbausteine vor. Diese Logikbausteine stehen jedem im Rahmen der vom Autor eingeräumten / genannten Lizenz zur Verfügung.
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
jensgulow
Reactions:
Beiträge: 473
Registriert: Fr Apr 19, 2019 4:37 pm
Wohnort: Leipzig
Hat sich bedankt: 75 Mal
Danksagung erhalten: 206 Mal

[V4.1] Custom Logik zur Steuerung sonnenstandsabhängig boolean

#1

Beitrag von jensgulow »

Anbei mal eine Custom-Logik welche folgende Anforderungen erfüllen sollte:

Einschalten von Verbrauchern (boolean) in Abhängigkeit vom Sonnenstand (hier speziell Sonnenuntergang)

Beliebige Zeiträume vor/nach Sonnenuntergang auswählbar

Aktueller code erlaubt 5 verschiedene Zeitkorrekturen


Hier der code dazu:

Code: Alles auswählen

/**
 * Schaltzeiten boolean in Abhängigkeit vom Sonnenstand
 * Hier: Abends zum Sonnenuntergang (aus Astrobaustein)
 * Korrekturwerte (plus/minus) in Sekunden
 */

{
  "Level": [
    ["$Input","int",0],
    ["$Result1","bool",false],
    ["$Result2","bool",false],
    ["$Result3","bool",false],
    ["$Result4","bool",false],
    ["$Result5","bool",false],
    ["$Out1","int",0],
    ["$Out2","int",0],
    ["$Out3","int",0],
    ["$Out4","int",0],
    ["$Out5","int",0],
    ["$Korrektur1","int",0],
    ["$Korrektur2","int",0],
    ["$Korrektur3","int",0],
    ["$Korrektur4","int",0],
    ["$Korrektur5","int",0],
    ["$Formula","string","X1+X2"],
    ["$VAR<Inhibit?>","bool",false]
  ],
  "Module": [
    ["Break",["$VAR<Inhibit?>"]],
    
    ["CalcFormula",["$Input","$Korrektur1"], "$Out1", "$Formula"],
    ["Wakeup","$Out1","$Result1"],
    ["SendExplicit","$Result1","$Result1",1],
    
    ["CalcFormula",["$Input","$Korrektur2"], "$Out2", "$Formula"],
    ["Wakeup","$Out2","$Result2"],
    ["SendExplicit","$Result2","$Result2",1],
    
    ["CalcFormula",["$Input","$Korrektur3"], "$Out3", "$Formula"],
    ["Wakeup","$Out3","$Result3"],
    ["SendExplicit","$Result3","$Result3",1],

    ["CalcFormula",["$Input","$Korrektur4"], "$Out4", "$Formula"],
    ["Wakeup","$Out4","$Result4"],
    ["SendExplicit","$Result4","$Result4",1],

    ["CalcFormula",["$Input","$Korrektur5"], "$Out5", "$Formula"],
    ["Wakeup","$Out5","$Result5"],
    ["SendExplicit","$Result5","$Result5",1]
  ],
  "Input": [
    ["Korrektur1","Zeit in sec (positiv oder negativ)","$Korrektur1","u"],
    ["Korrektur2","Zeit in sec (positiv oder negativ)","$Korrektur2","u"],
    ["Korrektur3","Zeit in sec (positiv oder negativ)","$Korrektur3","u"],
    ["Korrektur4","Zeit in sec (positiv oder negativ)","$Korrektur4","u"],
    ["Korrektur5","Zeit in sec (positiv oder negativ)","$Korrektur5","u"],
    ["Sonnenuntergang","Unixtime aus Astrobaustein","$Input","ci"],    
    ["Inhibit","INHIBIT","$VAR<Inhibit?>","u"]
  ],
  "Output": [
    ["SCHALTEN1 EIN","Schaltzeit 1","$Result1","x"],
    ["SCHALTEN2 EIN","Schaltzeit 2","$Result2","x"],
    ["SCHALTEN3 EIN","Schaltzeit 3","$Result3","x"],
    ["SCHALTEN4 EIN","Schaltzeit 4","$Result4","x"],
    ["SCHALTEN5 EIN","Schaltzeit 5","$Result5","x"]
  ]
}
Der Eingang wird durch den Astrobaustein (hier Sonnenuntergang) als unix-timestamp befüllt.
Der Eingang steht auf "ci", das heisst die Logik wird nur dann ausgeführt, wenn eine gültige Eingabe vorhanden ist. Durch das "c" wird die Logik bezüglich dieses Einganges nur 1x täglich "angestossen", da sich ja der Zeitpunkt des Sonnenunterganges nur mit Wechsel des Datums ändert.

Die Korrekturzeiten sind in Sekunden angegeben.

Beim Erreichen des ersten Zeitpunktes wird $Result1 true. Durch das nachfolgende sendexplicit wird nur das true an den Ausgang gesandt durch eine positive flanke von $Result1.

Wird der zweite Zeitpunkt erreicht wird $Result2 true. Hier selbes Verhalten wie oben beschrieben.
Allerdings wird auch das erste wakeup wieder ausgeführt (Problem siehe hier: viewtopic.php?f=103&t=4529#p58915).
Ist aber nicht von Belang, da $Result1 ja schon true war. Dadurch zieht das nachfolgende sendexplizit nicht -> kein Erneutes Aussenden an den Ausgang.

Selbiges passiert zu den übrigen Schaltpunkten. Schließlich sind alle $Result (1-5) true.

Mit Anbruch eines neuen Tages ändert sich $Input (die Zeit des Sonnenunterganges) -> die Logik wird neu gestartet und $Result1-5 werden wieder false.
Logik Schalten Sonnenstand.jpg
Ich hoffe ich habe das verständlich erklärt.

Demnächst möchte ich ähnliches für das Ausschalten am morgen sowie auch für Verbraucher zusammenbauen, welche Prozentangaben erwarten (Jalousien).

Letztendlich eine Art abgespeckte Zeitschaltuhr für immer zur selben Zeit wiederkehrende Ereignisse.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Zuletzt geändert von jensgulow am Di Nov 12, 2024 1:48 pm, insgesamt 1-mal geändert.
Viele Grüße

Jens

_____________________________________________________________________
TWS 2600#394 , TWS 3500L#1051, VPN offen, Reboot erlaubt
genutzt? -> TWS, KNX, 1-wire, MQTT, MODBUS, Http-REST-API, IFTTT, Enocean, Amazon Alexa

blaubaerli
Reactions:
Beiträge: 2669
Registriert: Sa Sep 15, 2018 10:26 am
Wohnort: Kerpen
Hat sich bedankt: 998 Mal
Danksagung erhalten: 787 Mal

#2

Beitrag von blaubaerli »

Hallo Jens,

wie gesagt, ich bin nach wie vor der Meinung, dass wir das schon mal hatten, das "nur" ein wakeup pro Logik sinnvoll ist. Habe es aber immer noch nicht gefunden... :confusion-scratchheadyellow:

Daher würde ich die Offsets in der initialen Logik ermitteln, an 5 Ausgängen weiterreichen und dann mit 5 parallelen "sekundären" Logiken mit jeweils einem dort lokal erzeugten Wakeup weiterarbeiten.

Das sollte das gefahrfrei und ohne ungewünschte Nebeneffekte ermöglichen. :whistle:

Beste Grüße
Jens
timberwolf168(2600er)VPN offenReboot nach Vereinbarung
timberwolf1699(3500XL)VPN offenReboot jederzeit
wiregate1250
Bitte WIKI lesen.

Robert_Mini
Reactions:
Beiträge: 3903
Registriert: So Aug 12, 2018 8:44 am
Hat sich bedankt: 1263 Mal
Danksagung erhalten: 2213 Mal

#3

Beitrag von Robert_Mini »

Hallo zusammen!

Viele Wege führen nach Rom, insofern finde ich die Lösung mit 5x wake-up und sendexplicit auf steigende Flanke durchaus sehr gut.
Bin selbst auch kein Freund von 7 Einzellogiken für eigentlich eine Anwendung. Ich hab so schon 300 Logiken, das wären sonst >1000.
Einziger Nachteil: das sendexplizit ist nicht im DokMode sichtbar, da muss man ein wenig aufpassen…
Lg
Robert
Timberwolf Server 2500 / #117 (VPN offen + reboot nach Rückfrage) / zusätzlich: 3500M/#935, 3500L/#1297
Benutzeravatar

Ersteller
jensgulow
Reactions:
Beiträge: 473
Registriert: Fr Apr 19, 2019 4:37 pm
Wohnort: Leipzig
Hat sich bedankt: 75 Mal
Danksagung erhalten: 206 Mal

#4

Beitrag von jensgulow »

Genau, deshalb hatte ich das mit Dummy mqtt topics als Ziel überprüft.
Zuletzt geändert von jensgulow am Di Nov 12, 2024 10:15 pm, insgesamt 1-mal geändert.
Viele Grüße

Jens

_____________________________________________________________________
TWS 2600#394 , TWS 3500L#1051, VPN offen, Reboot erlaubt
genutzt? -> TWS, KNX, 1-wire, MQTT, MODBUS, Http-REST-API, IFTTT, Enocean, Amazon Alexa
Antworten

Zurück zu „Zusätzliche Logikbausteine“