Systemvariable aendern
Moderator: Co-Administratoren
Systemvariable aendern
Hallo,
ich habe eine Systemvariable "Timer Kaffeemaschine" und moechte per Programm den Status der Variable zwischen zwei Zustaenden umschalten. Bei meinem Programm wird jedoch die zweite Bedingung nie erfuellt und die zweite Aktivitaet niemals ausgefefuehrt. Wenn ich die Bedingungen tausche, passiert aber genau das gleiche: Die 2. Bedingung wird nicht erfuellt und die Aktivitaet dazu nicht ausgefuehrt.
Habe ich einen Denkfehler? Uebersehe ich etwas?
Vielen Dank fuer einen Hinweis.
lg
Schlusi
ich habe eine Systemvariable "Timer Kaffeemaschine" und moechte per Programm den Status der Variable zwischen zwei Zustaenden umschalten. Bei meinem Programm wird jedoch die zweite Bedingung nie erfuellt und die zweite Aktivitaet niemals ausgefefuehrt. Wenn ich die Bedingungen tausche, passiert aber genau das gleiche: Die 2. Bedingung wird nicht erfuellt und die Aktivitaet dazu nicht ausgefuehrt.
Habe ich einen Denkfehler? Uebersehe ich etwas?
Vielen Dank fuer einen Hinweis.
lg
Schlusi
- Black
- Beiträge: 5483
- Registriert: 12.09.2015, 22:31
- System: Alternative CCU (auf Basis OCCU)
- Wohnort: Wegberg
- Hat sich bedankt: 424 Mal
- Danksagung erhalten: 1074 Mal
- Kontaktdaten:
Re: Systemvariable aendern
bitte lesen: tips für Anfänger.
programme nur mit prüfen = programm wird nie triggern..
programme nur mit prüfen = programm wird nie triggern..
Wenn das Fernsehprogramm immer mehr durch nervende Werbung unterbrochen wird und der Radiomoderator nur noch Müll erzählt, ist es besser, die Zeit für sinnvolle Dinge zu nutzen -
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg
Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann
Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W
technical contribution against annoying advertising
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg
Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann
Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W
technical contribution against annoying advertising
-
- Beiträge: 4155
- Registriert: 09.09.2012, 10:41
- System: Alternative CCU (auf Basis OCCU)
- Hat sich bedankt: 78 Mal
- Danksagung erhalten: 301 Mal
Re: Systemvariable aendern
...und dass die erste Aktivität ausgeführt wird, liegt wahrscheinlich daran, dass du das Programm manuell startest. Dann wird nämlich nichts geprüft und immer die erste Aktivität ausgeführt.
Die Felder, in denen bei dir "nur prüfen" steht, legen fest, ob und wann das Programm einmalig ausgeführt wird. Erst bei Ausführung werden dann die Bedingungen geprüft.
Die Felder, in denen bei dir "nur prüfen" steht, legen fest, ob und wann das Programm einmalig ausgeführt wird. Erst bei Ausführung werden dann die Bedingungen geprüft.
Es gibt 10 Arten von Menschen: solche die Binärcode verstehen und solche, die ihn nicht verstehen.
- robbi77
- Beiträge: 13860
- Registriert: 19.01.2011, 19:15
- System: CCU
- Wohnort: Landau
- Hat sich bedankt: 182 Mal
- Danksagung erhalten: 739 Mal
Re: Systemvariable aendern
Und wenn du Glück hast schießt du deine ccu in eine dauerschleife.
Was soll das Programm? Eine Systemvariable die sich selbst umschaltet? Ein Perpetuum Mobile?
Alle Links die du brauchst sind in meiner Signatur.
Was soll das Programm? Eine Systemvariable die sich selbst umschaltet? Ein Perpetuum Mobile?
Alle Links die du brauchst sind in meiner Signatur.
Bei Risiken und Nebenwirkungen fragen Sie den Elektriker Ihres geringsten Mißtrauens!
http://www.eq-3.de/service/downloads.html
Tips und Tricks für Anfänger: viewtopic.php?t=22801
Programmlogik: viewtopic.php?f=31&t=4251
Webui-Handbuch: https://www.eq-3.de/downloads/download/ ... h_eQ-3.pdf
Script und Linksammlung: viewtopic.php?f=26&t=27907
Troll des Forums ...
http://www.eq-3.de/service/downloads.html
Tips und Tricks für Anfänger: viewtopic.php?t=22801
Programmlogik: viewtopic.php?f=31&t=4251
Webui-Handbuch: https://www.eq-3.de/downloads/download/ ... h_eQ-3.pdf
Script und Linksammlung: viewtopic.php?f=26&t=27907
Troll des Forums ...
-
- Beiträge: 1573
- Registriert: 28.05.2015, 12:48
- Wohnort: Willich
- Hat sich bedankt: 4 Mal
- Danksagung erhalten: 10 Mal
Re: Systemvariable aendern
Wie startest du denn das Programm?
Ich vermute der Grundgedanke dahinter ist, das wenn man das Programm startet, das dann die Variable umschalten soll, egal wo die vorher drauf war.
dafür muss das Programm aber durch einen Trigger gestartet werden (z.B: über ein Skript in einem anderen Programm, oder einen Tastendruck, der mit in dieses Programm muss)
Durch das Betätigen des "Start" Buttons wird NICHT das Programm gestartet, sondern einfach der DANN-Pfad durchlaufen (egal was im Wenn steht), daher der Hinweis von Black die Tipps für Anfänger zu lesen, da sind diese ganzen kleinen "Fallen" schön erklärt!
Ich vermute der Grundgedanke dahinter ist, das wenn man das Programm startet, das dann die Variable umschalten soll, egal wo die vorher drauf war.
dafür muss das Programm aber durch einen Trigger gestartet werden (z.B: über ein Skript in einem anderen Programm, oder einen Tastendruck, der mit in dieses Programm muss)
Durch das Betätigen des "Start" Buttons wird NICHT das Programm gestartet, sondern einfach der DANN-Pfad durchlaufen (egal was im Wenn steht), daher der Hinweis von Black die Tipps für Anfänger zu lesen, da sind diese ganzen kleinen "Fallen" schön erklärt!
Gruß Carsten
- Roland M.
- Beiträge: 9805
- Registriert: 08.12.2012, 15:53
- System: CCU
- Wohnort: Graz, Österreich
- Hat sich bedankt: 252 Mal
- Danksagung erhalten: 1381 Mal
Re: Systemvariable aendern
Hallo!
Ganz abgesehen vom schon erwähnten "Perpetuum mobile" noch ein allgemeiner Hinweis:
Wenn du als Bedingung eine logische Variable hast, die je nur zwei Zustände haben kann (wahr, falsch), dann ist das zusätzlich SONSTWENN überflüssig und belastet maximal die CCU.
Aus dem
wird einfach
Roland
Ganz abgesehen vom schon erwähnten "Perpetuum mobile" noch ein allgemeiner Hinweis:
Wenn du als Bedingung eine logische Variable hast, die je nur zwei Zustände haben kann (wahr, falsch), dann ist das zusätzlich SONSTWENN überflüssig und belastet maximal die CCU.
Aus dem
Code: Alles auswählen
WENN SV=wahr
DANN mach was
SONSTWENN SV=falsch
DANN mach was anderes
Code: Alles auswählen
WENN SV=wahr
DANN mach was
SONST mach was anderes
Roland
Zur leichteren Hilfestellung bitte unbedingt beachten:
-----------------------------------------------------------------------
1. CCU2 mit ~100 Geräten (in Umstellung auf RaspberryMatic-OVA auf Proxmox-Server)
2. CCU2 per VPN mit ~50 Geräten (geplant: RaspberryMatic auf Charly)
3. CCU2 per VPN mit ~40 Geräten (geplant: RaspberryMatic auf CCU3)
CCU1, Test-CCU2, Raspi 1 mit kleinem Funkmodul, RaspberryMatic als VM unter Proxmox, Access Point,...
- Bezeichnung (HM-... bzw. HmIP-...) der betroffenen Geräte angeben (nicht Artikelnummer)
- Kurzbeschreibung des Soll-Zustandes (Was soll erreicht werden?)
- Kurzbeschreibung des Ist-Zustandes (Was funktioniert nicht?)
- Fehlermeldungen genau abschreiben, besser noch...
- Screenshots von Programmen, Geräteeinstellungen und Fehlermeldungen (direkt als jpg/png) einstellen!
-----------------------------------------------------------------------
1. CCU2 mit ~100 Geräten (in Umstellung auf RaspberryMatic-OVA auf Proxmox-Server)
2. CCU2 per VPN mit ~50 Geräten (geplant: RaspberryMatic auf Charly)
3. CCU2 per VPN mit ~40 Geräten (geplant: RaspberryMatic auf CCU3)
CCU1, Test-CCU2, Raspi 1 mit kleinem Funkmodul, RaspberryMatic als VM unter Proxmox, Access Point,...
Re: Systemvariable aendern
Danke fuer die Hinweise, der richtige Trigger fehlte.
Und etwas ueber die Logik gelernt
Und etwas ueber die Logik gelernt
- G-Punkt
- Beiträge: 26
- Registriert: 04.12.2018, 06:54
- System: Alternative CCU (auf Basis OCCU)
- Wohnort: Ottmarsbocholt (Münsterland)
- Hat sich bedankt: 3 Mal
Re: Systemvariable aendern
ich krame diesen alten Thread mal raus (auch weil er eigentich nicht final geklärt wurde)...
Da ich mit der WebUI-Logik nicht, oder nur sehr schwer, zurecht gekommen bin, habe ich bei meinem aktuellen System fast alles mit Script-Programmierung gelöst, was auch wunderbar klappt.
Bei meinem neuen System möchte ich mich etwas intensiver mit der "Klick-Programmierung" beschäftigen und stehe exakt vor dem hier beschriebenen banalen Problem: einfach und simpel manuell (!!!) eine logische Systemvariable umschalten (true > false bzw. false > true).
Und wenn ich all das, was ich bislang gelesen habe, richtig verstehe, funktioniert das nicht bei einem manuellen Aufruf??
Bislang mache ich das so:
Ein Programm erzeugen mit dem einzigen Befehl, dieses Script aufzurufen:
Und dazu gibt es keine "Klick-Programmierung"-Alternative???
(...wie gesagt: für einen manuellen Programmaufruf!!!)
Warum überhaupt, unterscheidet ein Programm, ob es von einem anderen Programm getriggert wurde oder manuell aufgerufen wurde?
Aber das wurde warscheinlich schon bis zum Erbrechen erörtert...
(Sorry für diesen geschriebenen Gedanken! )
Da ich mit der WebUI-Logik nicht, oder nur sehr schwer, zurecht gekommen bin, habe ich bei meinem aktuellen System fast alles mit Script-Programmierung gelöst, was auch wunderbar klappt.
Bei meinem neuen System möchte ich mich etwas intensiver mit der "Klick-Programmierung" beschäftigen und stehe exakt vor dem hier beschriebenen banalen Problem: einfach und simpel manuell (!!!) eine logische Systemvariable umschalten (true > false bzw. false > true).
Und wenn ich all das, was ich bislang gelesen habe, richtig verstehe, funktioniert das nicht bei einem manuellen Aufruf??
Bislang mache ich das so:
Ein Programm erzeugen mit dem einzigen Befehl, dieses Script aufzurufen:
Code: Alles auswählen
if (dom.GetObject("Systemvariable").Value() == true) {
dom.GetObject("Systemvariable").State(false);
}
else {
dom.GetObject("Systemvariable").State(true);
}
(...wie gesagt: für einen manuellen Programmaufruf!!!)
Warum überhaupt, unterscheidet ein Programm, ob es von einem anderen Programm getriggert wurde oder manuell aufgerufen wurde?
Aber das wurde warscheinlich schon bis zum Erbrechen erörtert...
(Sorry für diesen geschriebenen Gedanken! )
Gruß
Guido
RM 3.67.10.20230114 & XML-API 1.20 auf TinkerboardS
CCU-Historian V2.6.0 auf Raspberry Pi 3B+ mit Raspian 10
~75 Hm-RF/HmIP-RF Geräte
Guido
RM 3.67.10.20230114 & XML-API 1.20 auf TinkerboardS
CCU-Historian V2.6.0 auf Raspberry Pi 3B+ mit Raspian 10
~75 Hm-RF/HmIP-RF Geräte
-
- Beiträge: 4155
- Registriert: 09.09.2012, 10:41
- System: Alternative CCU (auf Basis OCCU)
- Hat sich bedankt: 78 Mal
- Danksagung erhalten: 301 Mal
Re: Systemvariable aendern
Warum ein Programm bei manuellem Aufruf unbedingt das erste DANN ausführt, musst du den Hersteller / Entwickler fragen. Es ist halt so. Punkt.
Und um eine SV per WebUi-Programm umzuschalten braucht es halt einen Trigger, der die (dann einmalige) Bedingungsprüfung des Programms anstößt. Und gültige Trigger sind halt einzelne Programmzeilen, hinter denen nicht "nur prüfen" steht.
Wenn es keine ereignisgesteuerten Trigger (wie z.B. einen TFK oder einen Temperatursensor) gibt, kannst du einen einbauen, den du selbst beeinflussen kannst. Für diesen Zweck bieten sich die virtuellen Tasten an, die du entweder manuell per WebUi/App oder mit einem anderen Programm oder per Script "drücken" kannst.
Beispiel:
Und um eine SV per WebUi-Programm umzuschalten braucht es halt einen Trigger, der die (dann einmalige) Bedingungsprüfung des Programms anstößt. Und gültige Trigger sind halt einzelne Programmzeilen, hinter denen nicht "nur prüfen" steht.
Wenn es keine ereignisgesteuerten Trigger (wie z.B. einen TFK oder einen Temperatursensor) gibt, kannst du einen einbauen, den du selbst beeinflussen kannst. Für diesen Zweck bieten sich die virtuellen Tasten an, die du entweder manuell per WebUi/App oder mit einem anderen Programm oder per Script "drücken" kannst.
Beispiel:
Es gibt 10 Arten von Menschen: solche die Binärcode verstehen und solche, die ihn nicht verstehen.
- G-Punkt
- Beiträge: 26
- Registriert: 04.12.2018, 06:54
- System: Alternative CCU (auf Basis OCCU)
- Wohnort: Ottmarsbocholt (Münsterland)
- Hat sich bedankt: 3 Mal
Re: Systemvariable aendern
Danke für die flotte Antwort!
Aha! Die deutliche Quintessenz fehlte mir hier doch irgendwie: es geht nicht - Punkt!
Es läßt sich also lediglich über den Umweg eines Tastendrucks (virtuell oder verknüpft mit einem physikalischen Taster) oder über ein anderweitig erzeugtes Ereignis heraus realisieren. Oder halt via Script...
Dann habe ich die WebUI-(Un)Logik ja richtig verstanden!
Ich frugte nur deswegen nach, weil ich hoffte, daß da noch was kommen könnte, die Lösung aber einfach nur nicht präsentiert wurde...
Aha! Die deutliche Quintessenz fehlte mir hier doch irgendwie: es geht nicht - Punkt!
Es läßt sich also lediglich über den Umweg eines Tastendrucks (virtuell oder verknüpft mit einem physikalischen Taster) oder über ein anderweitig erzeugtes Ereignis heraus realisieren. Oder halt via Script...
Dann habe ich die WebUI-(Un)Logik ja richtig verstanden!
Ich frugte nur deswegen nach, weil ich hoffte, daß da noch was kommen könnte, die Lösung aber einfach nur nicht präsentiert wurde...
Gruß
Guido
RM 3.67.10.20230114 & XML-API 1.20 auf TinkerboardS
CCU-Historian V2.6.0 auf Raspberry Pi 3B+ mit Raspian 10
~75 Hm-RF/HmIP-RF Geräte
Guido
RM 3.67.10.20230114 & XML-API 1.20 auf TinkerboardS
CCU-Historian V2.6.0 auf Raspberry Pi 3B+ mit Raspian 10
~75 Hm-RF/HmIP-RF Geräte