Systemvariable aendern

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

schlusi
Beiträge: 25
Registriert: 17.11.2015, 12:23
Hat sich bedankt: 1 Mal

Systemvariable aendern

Beitrag von schlusi » 05.02.2019, 10:31

Hallo,

ich habe eine Systemvariable "Timer Kaffeemaschine" und moechte per Programm den Status der Variable zwischen zwei Zustaenden umschalten.
HMVariable.png
HMVariable.png (21.52 KiB) 1268 mal betrachtet
Bei meinem Programm wird jedoch die zweite Bedingung nie erfuellt und die zweite Aktivitaet niemals ausgefefuehrt.
HMProgramm.png
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

Benutzeravatar
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

Beitrag von Black » 05.02.2019, 10:35

bitte lesen: tips für Anfänger.

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

manfredh
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

Beitrag von manfredh » 05.02.2019, 11:54

...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.
Es gibt 10 Arten von Menschen: solche die Binärcode verstehen und solche, die ihn nicht verstehen.

Benutzeravatar
robbi77
Beiträge: 13858
Registriert: 19.01.2011, 19:15
System: CCU
Wohnort: Landau
Hat sich bedankt: 182 Mal
Danksagung erhalten: 739 Mal

Re: Systemvariable aendern

Beitrag von robbi77 » 05.02.2019, 12:53

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.
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 ...

Bratmaxe
Beiträge: 1573
Registriert: 28.05.2015, 12:48
Wohnort: Willich
Hat sich bedankt: 4 Mal
Danksagung erhalten: 10 Mal

Re: Systemvariable aendern

Beitrag von Bratmaxe » 05.02.2019, 14:02

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!
Gruß Carsten

Benutzeravatar
Roland M.
Beiträge: 9804
Registriert: 08.12.2012, 15:53
System: CCU
Wohnort: Graz, Österreich
Hat sich bedankt: 252 Mal
Danksagung erhalten: 1381 Mal

Re: Systemvariable aendern

Beitrag von Roland M. » 05.02.2019, 14:41

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

Code: Alles auswählen

WENN SV=wahr
DANN mach was
SONSTWENN SV=falsch
DANN mach was anderes
wird einfach

Code: Alles auswählen

WENN SV=wahr
DANN mach was
SONST mach was anderes

Roland
Zur leichteren Hilfestellung bitte unbedingt beachten:
  • 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,...

schlusi
Beiträge: 25
Registriert: 17.11.2015, 12:23
Hat sich bedankt: 1 Mal

Re: Systemvariable aendern

Beitrag von schlusi » 11.02.2019, 13:54

Danke fuer die Hinweise, der richtige Trigger fehlte.
Und etwas ueber die Logik gelernt :)

Benutzeravatar
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

Beitrag von G-Punkt » 15.04.2021, 10:08

ich krame diesen alten Thread mal raus (auch weil er eigentich nicht final geklärt wurde)... :lol:

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?? :shock:

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);
}
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! :oops: )
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

manfredh
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

Beitrag von manfredh » 15.04.2021, 10:35

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:
Zwischenablage01.jpg
Es gibt 10 Arten von Menschen: solche die Binärcode verstehen und solche, die ihn nicht verstehen.

Benutzeravatar
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

Beitrag von G-Punkt » 15.04.2021, 11:09

Danke für die flotte Antwort!
Aha! Die deutliche Quintessenz fehlte mir hier doch irgendwie: es geht nicht - Punkt! :roll:

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! :D

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... :D
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

Antworten

Zurück zu „HomeMatic Zentrale (CCU / CCU2 / CCU3 / Charly)“