Programm ausführen mit Systemvariable als Bedingung
Moderator: Co-Administratoren
-
- Beiträge: 82
- Registriert: 14.03.2020, 16:47
- Hat sich bedankt: 11 Mal
- Danksagung erhalten: 1 Mal
Programm ausführen mit Systemvariable als Bedingung
Hallo ich habe ein Problem bei dem ich nicht weiter weiß.
Durch das Drücken eines Button in AIO NEO möchte in einem Programm eine Variable auf "0" prüfen und wenn dem so ist einen Aktor kurz schalten und anschließend die Variable auf den "1" setzen. Den Wert "1" soll die Variable dann 15min beibehalten.
Wenn in dieser Zeit von 15min (variable="1") das Programm wieder von AIO NEO mit dem Button aktiviert wird soll der Aktor wieder kurz schalten und die Variable (Bis zum nächsten Ereignis) auf "0" gesetzt werden.
Die Systemvariable nutze ich um in AIO NEO einen Status anzuzeigen.
Aber es wird, egal welchen Wert die Variable hat, nur die erste Aktivität durchlaufen. Der Wert der Systemvariable scheint die Prüfung nicht zu interessieren. Ich kann innerhalb der 15min nicht durch erneutes Drücken des Button den Aktor schalten und die Variable auf "0" setzen.
Ich hoffe es ist verständlich?!
Durch das Drücken eines Button in AIO NEO möchte in einem Programm eine Variable auf "0" prüfen und wenn dem so ist einen Aktor kurz schalten und anschließend die Variable auf den "1" setzen. Den Wert "1" soll die Variable dann 15min beibehalten.
Wenn in dieser Zeit von 15min (variable="1") das Programm wieder von AIO NEO mit dem Button aktiviert wird soll der Aktor wieder kurz schalten und die Variable (Bis zum nächsten Ereignis) auf "0" gesetzt werden.
Die Systemvariable nutze ich um in AIO NEO einen Status anzuzeigen.
Aber es wird, egal welchen Wert die Variable hat, nur die erste Aktivität durchlaufen. Der Wert der Systemvariable scheint die Prüfung nicht zu interessieren. Ich kann innerhalb der 15min nicht durch erneutes Drücken des Button den Aktor schalten und die Variable auf "0" setzen.
Ich hoffe es ist verständlich?!
-
- Beiträge: 692
- Registriert: 20.09.2017, 23:08
- Hat sich bedankt: 11 Mal
- Danksagung erhalten: 88 Mal
Re: Programm ausführen mit Systemvariable als Bedingung
Nur prüfen wird nicht helfen.
Der Trigger für ein Programm sollte "bei Änderung auslösen" sein, das wird dich deinem Vorhaben näher bringen
Der Trigger für ein Programm sollte "bei Änderung auslösen" sein, das wird dich deinem Vorhaben näher bringen
CCU3 und CCU2 für Heizung, Sicherheit, Energiesparen, Anwesenheit und Klingel
IOBroker und Google Home zur Einbindung Klimaanlage, Smartspeaker, SPS, Arduino D1 Mini...
Datenauswertung ECharts
Smart-Home sollte nicht "bedient" werden müssen!
Bitte immer Kirche mit Dorf direkt verknüpfen!!!
IOBroker und Google Home zur Einbindung Klimaanlage, Smartspeaker, SPS, Arduino D1 Mini...
Datenauswertung ECharts
Smart-Home sollte nicht "bedient" werden müssen!
Bitte immer Kirche mit Dorf direkt verknüpfen!!!
- Baxxy
- Beiträge: 10836
- Registriert: 18.12.2018, 15:45
- System: Alternative CCU (auf Basis OCCU)
- Hat sich bedankt: 608 Mal
- Danksagung erhalten: 2228 Mal
Re: Programm ausführen mit Systemvariable als Bedingung
Jein.
Er hat ja im Sonst wenn nochmal die gleiche Systemvariable als Trigger mit bei Änderung auslösen.
Das Problem wird vermutlich sein das du aus NEO heraus das Programm direkt startest und somit immer das erste DANN ausgeführt wird.
Wenn man aus NEO heraus die virtuellen Zentralen-Tasten (HM-RCV-50 BidCoS-RF oder HmIP-RCV-50 HmIP-RCV-1) drücken kann würde ich eine solche im WENN und SONST Wenn einbauen und diese mit der Prüfung der Systemvariablen verUNDen.
Grüße... Baxxy
- Raspberry Pi 4 als Homematic-Zentrale - Tipps und Informationen
- Analysescript für genutzte Funk-Adressen, Funkmodul-Hardware und Zentralen Hardware
- NANO CUL 868MHz - Stick zum AskSin Analyzer XS umflashen (Anleitung für ArduinoIDE unter Windows)
- Firmware Updates für IP-Aktoren / Sensoren... Info's, Tipps und Sonstiges
- CCU funkt nicht - CarrierSense (CS) Probleme erkennen und lösen
-
- Beiträge: 82
- Registriert: 14.03.2020, 16:47
- Hat sich bedankt: 11 Mal
- Danksagung erhalten: 1 Mal
Re: Programm ausführen mit Systemvariable als Bedingung
Das mit dem "Prüfen" hab ich mir schon gedacht. Mit "bei Änderung auslösen" hab ich auch probiert, dann geht das Programm in eine Schleife und triggert sich selbst bis der DutyCycle auf 99% geht. Ich verstehe dann aber nicht die Logik, wenn ich in einer Bedingung etwas "prüfe" dann soll es doch erst in die "Dann" gehen wenn die Bedingung/Prüfung erfüllt ist!?
Da bin ich jetzt raus. Ich starte doch aus dem NEO heraus das Programm und nicht virtuelle "Tasten"? Wie meinst Du das? ich verstehe den letzten Satz nicht!?Wenn man aus NEO heraus die virtuellen Zentralen-Tasten (HM-RCV-50 BidCoS-RF oder HmIP-RCV-50 HmIP-RCV-1) drücken kann würde ich eine solche im WENN und SONST Wenn einbauen und diese mit der Prüfung der Systemvariablen verUNDen.
- shartelt
- Beiträge: 7421
- Registriert: 14.01.2015, 14:59
- System: Alternative CCU (auf Basis OCCU)
- Hat sich bedankt: 524 Mal
- Danksagung erhalten: 753 Mal
Re: Programm ausführen mit Systemvariable als Bedingung
ein manuell gestartetes Programm führt immer das Dann aus, egal was die Bedingung sagt. Daher sollst Du nicht das Programm starten sondern es über eine Taste umbauen, die dann eine Prüfung gewährleistet.
-
- Beiträge: 5452
- Registriert: 30.05.2019, 11:37
- System: Alternative CCU (auf Basis OCCU)
- Wohnort: Chemnitz
- Hat sich bedankt: 116 Mal
- Danksagung erhalten: 741 Mal
Re: Programm ausführen mit Systemvariable als Bedingung
Das ist das unverständliche Dilemma, dass ja gar nicht das (komplette) Programm gestartet wird, wie man erwarten sollte, sondern ausschließlich die Anweisungen, die im DANN-Pfad stehen (genauso wie es bei "Status/Bedienung" -> "Programme" passiert).
In solchem Fall kann man aber auch ein spezielles Programm anlegen, das nur aus einem DANN-Pfad besteht (keinerlei Triggerereignisse) und wo die ganze WENN-Logik dort in einem Skript untergebracht ist. Dann braucht man auch die virtuellen Tasten nicht zu bemühen.
Wenn du rückschalten willst, mußt du dann doch dieses einzelnen Ereignis triggern, das spielt aber beim Aufruf aus Neo heraus keine Rolle.
In solchem Fall kann man aber auch ein spezielles Programm anlegen, das nur aus einem DANN-Pfad besteht (keinerlei Triggerereignisse) und wo die ganze WENN-Logik dort in einem Skript untergebracht ist. Dann braucht man auch die virtuellen Tasten nicht zu bemühen.
Wenn du rückschalten willst, mußt du dann doch dieses einzelnen Ereignis triggern, das spielt aber beim Aufruf aus Neo heraus keine Rolle.
-
- Beiträge: 82
- Registriert: 14.03.2020, 16:47
- Hat sich bedankt: 11 Mal
- Danksagung erhalten: 1 Mal
Re: Programm ausführen mit Systemvariable als Bedingung
Okay verstanden, das muss ich mir anschauen ob ich das hin bekomme. Ich bediene also aus dem Neo einen Virt.Taster der Schaltplatine (bekomme ich den ins Neo?) und mache dazu ein Programm das diese Bedienung dann "abfängt" und reagiert. Dann kann ich also auch Systemvariablen "Prüfen" und als Bedingung wie ich es möchte einbauen?! So nach der Art... "wenn" VirtTaster ein "und" SystVariable =XX (nur Prüfen?) "dann" Schaltkanal der Platine ein "sonst wenn" usw...
Na mal schauen...
Okay, auch das "verstehe" ich. Dazu muss ich aber auch ein Skript schreiben, naja und skripten kann ich (noch) nicht. Programmieren geht, aber der Syntax ist mir nicht noch nicht klar.Das ist das unverständliche Dilemma, dass ja gar nicht das (komplette) Programm gestartet wird, wie man erwarten sollte, sondern ausschließlich die Anweisungen, die im DANN-Pfad stehen (genauso wie es bei "Status/Bedienung" -> "Programme" passiert).
In solchem Fall kann man aber auch ein spezielles Programm anlegen, das nur aus einem DANN-Pfad besteht (keinerlei Triggerereignisse) und wo die ganze WENN-Logik dort in einem Skript untergebracht ist. Dann braucht man auch die virtuellen Tasten nicht zu bemühen.
Wenn du rückschalten willst, mußt du dann doch dieses einzelnen Ereignis triggern, das spielt aber beim Aufruf aus Neo heraus keine Rolle.
Doch erst mal vielen Dank für Eure Hilfe!
-
- Beiträge: 5452
- Registriert: 30.05.2019, 11:37
- System: Alternative CCU (auf Basis OCCU)
- Wohnort: Chemnitz
- Hat sich bedankt: 116 Mal
- Danksagung erhalten: 741 Mal
Re: Programm ausführen mit Systemvariable als Bedingung
Einfach mal die Dokumentation lesen (ok, da steht auch vieles gar nicht drin ...) und anfangen. Die Skriptsprache ist zwar an einigen Stellen genauso unverständlich wie das Verhalten beim Starten von Programmen (insbesondere die komplett fehlenden Vorrangregeln in Ausdrücken können einen zur Verzweiflung treiben!), aber man kann vieles damit machen, was in der Programmebene gar nicht oder sehr umständlich geht. Es lohnt sich.
Noch eine Möglichkeit für meinen Vorschalg:
Ich mache es generell so, dass ich für Programme, die aus Neo heraus aufgerufen werden sollen, welche erstelle, die komplett nur aus dem DANN bestehen.
Wenn du hier eine Variable unabhängig von der Neo-Bedienung zeitlich verzögert rückstellen willst, dann kannst du das Rücksetzen ja in einem gesonderten WebUI-Programm erledigen, dann brauchst du auch hierin keinerlei WENN und keinerlei Trigger.
-
- Beiträge: 82
- Registriert: 14.03.2020, 16:47
- Hat sich bedankt: 11 Mal
- Danksagung erhalten: 1 Mal
Re: Programm ausführen mit Systemvariable als Bedingung
Das ich irgendwann ans skripten muss war klar, aber solch ein einfaches Programm, dachte nicht das das solche Schwierigkeiten macht.Matsch hat geschrieben: ↑11.03.2021, 11:24
Einfach mal die Dokumentation lesen (ok, da steht auch vieles gar nicht drin ...) und anfangen. Die Skriptsprache ist zwar an einigen Stellen genauso unverständlich wie das Verhalten beim Starten von Programmen (insbesondere die komplett fehlenden Vorrangregeln in Ausdrücken können einen zur Verzweiflung treiben!), aber man kann vieles damit machen, was in der Programmebene gar nicht oder sehr umständlich geht. Es lohnt sich.
Noch eine Möglichkeit für meinen Vorschalg:
Ich mache es generell so, dass ich für Programme, die aus Neo heraus aufgerufen werden sollen, welche erstelle, die komplett nur aus dem DANN bestehen.
Wenn du hier eine Variable unabhängig von der Neo-Bedienung zeitlich verzögert rückstellen willst, dann kannst du das Rücksetzen ja in einem gesonderten WebUI-Programm erledigen, dann brauchst du auch hierin keinerlei WENN und keinerlei Trigger.
Danke für den Tipp mit dem separaten Programm für das Rücksetzen.
ich werde heute Abend noch mal bissel testen.
-
- Beiträge: 6744
- Registriert: 22.05.2012, 08:40
- System: CCU
- Hat sich bedankt: 25 Mal
- Danksagung erhalten: 485 Mal
Re: Programm ausführen mit Systemvariable als Bedingung
Das kannst Du mit Skripten lösen wenn Du das willst. Falls Du eine CCU3 nutzten solltest, wäre optional auch eine mögliche Alternative einen Task im NEO Server zu erstellen und diesen mit einem HTTP Request auf dem Button zu triggern. Im Task prüfst Du dann im Falls Block auf die Bedingung, dann braucht Du auch in dem Fall kein weiteres Skript.