Zustandsänderung nur einmal ausführen

Programmierung der HomeMatic CCU mittels contronics homeputer CL

Moderator: Co-Administratoren

DJDieter
Beiträge: 315
Registriert: 11.01.2008, 14:41
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 34 Mal
Danksagung erhalten: 20 Mal

Zustandsänderung nur einmal ausführen

Beitrag von DJDieter » 17.10.2016, 14:38

CCU2 mit FHZ2000 und HPCL. Es geht um einen FHT8b und der Statusanzeige. In dem Makro für den FHT8b steht u.a. folgendes Anweisung:

Code: Alles auswählen

wenn
Bad.Fenster geoeffnet
dann
Badfensterstatus_LED:=1
endewenn
wenn
Bad.Fenster geschlossen
dann
Badfensterstatus_LED:=0
endewenn
"Ausführung bei Änderung" ist aktiviert.
Nun ist es so, dass das Makro bei jeder Änderung der vom FHT empfangenen Daten eine Sendung an die Statusanzeige generiert, was zwangsläufig zu einem DutyCycle führt (das Makro läuft bei jedem der 12 FHT's). Wie kann ich das ändern, dass wirklich nur bei einem Zustandswechsel gesendet wird?
Raspberry PI 4 mit RaspberryMatic, 4 LAN-Gateways, zwei HmIP-HAP und 248 Geräte
CUxD mit 357 Kanälen auf 64 Geräten
Zusatzsoftware: XML-API, CUxD-Highcharts, NEO-Server, Programmedrucken, CUxD, E-Mail, Philips Hue, Messenger, CCU-Historian, JB-HP-Devices, HomeKit HomeMatic
Anbindungen: Wolf eBus; NodeMCU-Ultraschall-Füllstandsmessung mit Temperatureinfluß; Fußbodenheizung mit Rücklauftemperaturbegrenzer (RTL)

mikewolf99
Beiträge: 1322
Registriert: 13.08.2008, 20:57
Wohnort: Österreich nähe Wien
Hat sich bedankt: 7 Mal
Danksagung erhalten: 1 Mal

Re: Zustandsänderung nur einmal ausführen

Beitrag von mikewolf99 » 17.10.2016, 16:18

Hallo Ausführung bei Empfang deaktiviert ?
Mit freundlichen Grüßen
Mikewolf


Gesendet von iPhone mit Tapatalk
CCU2 mit Cuxd und HP CLX ,3 x FHZ2000,2 Funkgateway (eckig),und 2 Funkgateway (rund),RS LanGate
ca 590 Komponenten gemischt HM und FS20 90/10)`CCU auf Cubie LXCCU,CCU auf RPi3 Pivccu,Iobroker auf HPgen8,
Tinker,orangepi,Odroid .....,Sonoffs,Xiaomi und ne Menge esp8266

DJDieter
Beiträge: 315
Registriert: 11.01.2008, 14:41
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 34 Mal
Danksagung erhalten: 20 Mal

Re: Zustandsänderung nur einmal ausführen

Beitrag von DJDieter » 17.10.2016, 16:22

Ja
Raspberry PI 4 mit RaspberryMatic, 4 LAN-Gateways, zwei HmIP-HAP und 248 Geräte
CUxD mit 357 Kanälen auf 64 Geräten
Zusatzsoftware: XML-API, CUxD-Highcharts, NEO-Server, Programmedrucken, CUxD, E-Mail, Philips Hue, Messenger, CCU-Historian, JB-HP-Devices, HomeKit HomeMatic
Anbindungen: Wolf eBus; NodeMCU-Ultraschall-Füllstandsmessung mit Temperatureinfluß; Fußbodenheizung mit Rücklauftemperaturbegrenzer (RTL)

PeterM
Beiträge: 761
Registriert: 14.10.2008, 10:15
System: Alternative CCU (auf Basis OCCU)
Wohnort: Walldorf/Baden
Danksagung erhalten: 2 Mal

Re: Zustandsänderung nur einmal ausführen

Beitrag von PeterM » 17.10.2016, 17:16

Hallo DJDieter,

verwende mal den folgenden Teil:

Code: Alles auswählen

  wenn Bad.Fenster geoeffnet dann
    wenn Badfensterstatus_LED <> 1 dann
      Badfensterstatus_LED:= 1
    endewenn
  endewenn
  
  wenn Bad.Fenster geschlossen dann
    wenn Badfensterstatus_LED <> 0 dann
      Badfensterstatus_LED:= 0
    endewenn
  endewenn
Viele Grüße,
Peter

DJDieter
Beiträge: 315
Registriert: 11.01.2008, 14:41
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 34 Mal
Danksagung erhalten: 20 Mal

Re: Zustandsänderung nur einmal ausführen

Beitrag von DJDieter » 17.10.2016, 20:35

Vielen Dank für den Tipp. Hat aber leider (zumindest nach der history.hst) nicht funktioniert. Hier mal ein kleiner Auszug davon:
17.10.2016/19:17:44;BADFENSTERSTATUS_LED;rot;(1);[1]
17.10.2016/19:17:44;BADFENSTERSTATUS_LED;aus;(0);[1]
17.10.2016/19:17:44;BADFENSTERSTATUS_LED;rot;(1);[1]
17.10.2016/19:17:44;BADFENSTERSTATUS_LED;aus;(0);[1]
17.10.2016/19:17:45;BADFENSTERSTATUS_LED;rot;(1);[1]
17.10.2016/19:17:45;BADFENSTERSTATUS_LED;aus;(0);[1]
17.10.2016/19:17:46;BADFENSTERSTATUS_LED;rot;(1);[1]
17.10.2016/19:17:46;BADFENSTERSTATUS_LED;aus;(0);[1]
17.10.2016/19:17:47;BADFENSTERSTATUS_LED;rot;(1);[1]
17.10.2016/19:17:47;BADFENSTERSTATUS_LED;aus;(0);[1]
17.10.2016/19:19:41;BADFENSTERSTATUS_LED;rot;(1);[1]
17.10.2016/19:19:41;BADFENSTERSTATUS_LED;aus;(0);[1]
17.10.2016/19:29:41;BADFENSTERSTATUS_LED;rot;(1);[1]
17.10.2016/19:29:41;BADFENSTERSTATUS_LED;aus;(0);[1]
17.10.2016/19:29:43;BADFENSTERSTATUS_LED;rot;(1);[1]
17.10.2016/19:29:43;BADFENSTERSTATUS_LED;aus;(0);[1]
17.10.2016/19:45:41;BADFENSTERSTATUS_LED;rot;(1);[1]
17.10.2016/19:45:41;BADFENSTERSTATUS_LED;aus;(0);[1]
17.10.2016/19:45:42;BADFENSTERSTATUS_LED;rot;(1);[1]
17.10.2016/19:45:43;BADFENSTERSTATUS_LED;aus;(0);[1]
17.10.2016/19:52:59;BADFENSTERSTATUS_LED;rot;(1);[1]
17.10.2016/19:52:59;BADFENSTERSTATUS_LED;aus;(0);[1]
17.10.2016/19:54:56;BADFENSTERSTATUS_LED;rot;(1);[1]
17.10.2016/19:54:56;BADFENSTERSTATUS_LED;aus;(0);[1]
17.10.2016/19:56:54;BADFENSTERSTATUS_LED;rot;(1);[1]
17.10.2016/19:56:54;BADFENSTERSTATUS_LED;aus;(0);[1]
17.10.2016/19:56:55;BADFENSTERSTATUS_LED;rot;(1);[1]
17.10.2016/19:56:55;BADFENSTERSTATUS_LED;aus;(0);[1]
17.10.2016/20:14:32;BADFENSTERSTATUS_LED;rot;(1);[1]
17.10.2016/20:14:32;BADFENSTERSTATUS_LED;aus;(0);[1]
17.10.2016/20:14:33;BADFENSTERSTATUS_LED;rot;(1);[1]
17.10.2016/20:14:33;BADFENSTERSTATUS_LED;aus;(0);[1]

Ich gehe mal davon aus, dass jeder Eintrag eine Sendung bedeutet.
Raspberry PI 4 mit RaspberryMatic, 4 LAN-Gateways, zwei HmIP-HAP und 248 Geräte
CUxD mit 357 Kanälen auf 64 Geräten
Zusatzsoftware: XML-API, CUxD-Highcharts, NEO-Server, Programmedrucken, CUxD, E-Mail, Philips Hue, Messenger, CCU-Historian, JB-HP-Devices, HomeKit HomeMatic
Anbindungen: Wolf eBus; NodeMCU-Ultraschall-Füllstandsmessung mit Temperatureinfluß; Fußbodenheizung mit Rücklauftemperaturbegrenzer (RTL)

Familienvater
Beiträge: 7151
Registriert: 31.12.2006, 15:18
System: Alternative CCU (auf Basis OCCU)
Wohnort: Rhein-Main
Danksagung erhalten: 34 Mal

Re: Zustandsänderung nur einmal ausführen

Beitrag von Familienvater » 17.10.2016, 20:57

Hi,

wahrscheinlich geht da was mit den Stati schief, aus müsste eigentlich 0 sein, was 1 bedeutet, kann nur die Typdefinition ergeben.
Da das Objekt "aus" und "rot" kann, wäre es ggf. sinnvoll, einen Zeichenkettenvergleich auf genau diese Zustände zu machen, vielleicht sogar bei der Zuweisung.

Eigentlich sollte aus=0 und rot=1 sein, aber vielleicht ist manchmal mehr mehr als weniger, also mal Sicherheitshalber:

Code: Alles auswählen

  wenn Bad.Fenster geoeffnet dann
    wenn Badfensterstatus_LED <> "rot" dann
      Badfensterstatus_LED:= "aus"
    endewenn
  endewenn
  
  wenn Bad.Fenster geschlossen dann
    wenn Badfensterstatus_LED <> "aus" dann
      Badfensterstatus_LED:= "aus"
    endewenn
  endewenn
Die nächste Stufe wäre mal eine "Debugausgabe" in ein Textobjekt machen, welchen Status Badfensterstatus_LED hat.

Der Familienvater

DJDieter
Beiträge: 315
Registriert: 11.01.2008, 14:41
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 34 Mal
Danksagung erhalten: 20 Mal

Re: Zustandsänderung nur einmal ausführen

Beitrag von DJDieter » 17.10.2016, 21:13

Vielen Dank für den Tipp - funktioniert aber leider auch nicht.

Liegt es möglicherweise auch an den FHT's? In der Visualisierung werden mir bei den Raumreglern auch keine offenen Fenster angezeigt.
Raspberry PI 4 mit RaspberryMatic, 4 LAN-Gateways, zwei HmIP-HAP und 248 Geräte
CUxD mit 357 Kanälen auf 64 Geräten
Zusatzsoftware: XML-API, CUxD-Highcharts, NEO-Server, Programmedrucken, CUxD, E-Mail, Philips Hue, Messenger, CCU-Historian, JB-HP-Devices, HomeKit HomeMatic
Anbindungen: Wolf eBus; NodeMCU-Ultraschall-Füllstandsmessung mit Temperatureinfluß; Fußbodenheizung mit Rücklauftemperaturbegrenzer (RTL)

Familienvater
Beiträge: 7151
Registriert: 31.12.2006, 15:18
System: Alternative CCU (auf Basis OCCU)
Wohnort: Rhein-Main
Danksagung erhalten: 34 Mal

Re: Zustandsänderung nur einmal ausführen

Beitrag von Familienvater » 17.10.2016, 21:22

Hi,

laut des Codes in deiner History liegt die Quelle für jede! Umschaltung in einem Makro.

Da ich keine FHTs habe, kann ich nicht sagen, ob da z.B. bei der Statusmeldung des FHTs ein Fenster auf "offen" gemeldet wird (was rot zur Folge hätte) und ein anderes Fenster meldet geschlossen, was den Status gerade wieder zurückbiegt.

Da hilft ggf. wirklich nur noch ein neues Textobjekt, was auch in die History geloggt wird, und jedes! Makro, was einen Status der LED setzt, ändert das neue Textobjekt auf seinen Namen. Damit müsste in der History vor jeder Umschaltung der Name des Makros/Objekts auftauchen, was diese Statusänderung veranlasst.

Der Familienvater

DJDieter
Beiträge: 315
Registriert: 11.01.2008, 14:41
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 34 Mal
Danksagung erhalten: 20 Mal

Re: Zustandsänderung nur einmal ausführen

Beitrag von DJDieter » 17.10.2016, 21:31

laut des Codes in deiner History liegt die Quelle für jede! Umschaltung in einem Makro.
Ja, es ist das Makro in dem Objekt "Bad" und auch nur in diesem.
Da hilft ggf. wirklich nur noch ein neues Textobjekt, was auch in die History geloggt wird, und jedes! Makro, was einen Status der LED setzt, ändert das neue Textobjekt auf seinen Namen.
Das kapier ich leider nicht.
Raspberry PI 4 mit RaspberryMatic, 4 LAN-Gateways, zwei HmIP-HAP und 248 Geräte
CUxD mit 357 Kanälen auf 64 Geräten
Zusatzsoftware: XML-API, CUxD-Highcharts, NEO-Server, Programmedrucken, CUxD, E-Mail, Philips Hue, Messenger, CCU-Historian, JB-HP-Devices, HomeKit HomeMatic
Anbindungen: Wolf eBus; NodeMCU-Ultraschall-Füllstandsmessung mit Temperatureinfluß; Fußbodenheizung mit Rücklauftemperaturbegrenzer (RTL)

Familienvater
Beiträge: 7151
Registriert: 31.12.2006, 15:18
System: Alternative CCU (auf Basis OCCU)
Wohnort: Rhein-Main
Danksagung erhalten: 34 Mal

Re: Zustandsänderung nur einmal ausführen

Beitrag von Familienvater » 17.10.2016, 21:35

Hi,

Code: Alles auswählen

  wenn Bad.Fenster geoeffnet dann
    wenn Badfensterstatus_LED <> "rot" dann
      QuelleUmschaltung:="Bad.Fenster geoeffnet und Badfensterstatus_LED <> rot"
      Badfensterstatus_LED:= "aus"
    endewenn
  endewenn
  
  wenn Bad.Fenster geschlossen dann
    wenn Badfensterstatus_LED <> "aus" dann
      QuelleUmschaltung:="Bad.Fenster geschlossen und Badfensterstatus_LED <> aus"
      Badfensterstatus_LED:= "aus"
    endewenn
  endewenn

Antworten

Zurück zu „homeputer CL“