Bedingungen werden doppelt aktiviert

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

Ecopunt
Beiträge: 16
Registriert: 11.06.2019, 11:11
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal

Re: Bedingungen werden doppelt aktiviert

Beitrag von Ecopunt » 09.06.2023, 11:49

MichaelN hat geschrieben:
09.06.2023, 11:47
Ecopunt hat geschrieben:
09.06.2023, 11:33
glaube, dass wenn ich der SWDO auf "nur prüfen" einstell, das dann das Programm nicht mehr direkt reagiert sobalt der SWDO öffnet oder schliest. Stimmt?
Du solltest nur einen von beiden auf nur prüfen stellen. Der andere triggert ja auf jeden Fall
Okay, verstanden. So meinst du?

Naamloos2.jpg

MichaelN
Beiträge: 9679
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 700 Mal
Danksagung erhalten: 1626 Mal

Re: Bedingungen werden doppelt aktiviert

Beitrag von MichaelN » 09.06.2023, 11:50

Hast du aus Änderung ein Aktualisierung gemacht?
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

Matsch
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: Bedingungen werden doppelt aktiviert

Beitrag von Matsch » 09.06.2023, 11:52

MichaelN hat geschrieben:
09.06.2023, 11:48
Auf die Lösung hast du übrigens gar nicht reagiert. Absicht?
In deinem Skript abfragen, ob der Aktor bereits seinen soll Zustand hat.
sag ich ja:
Matsch hat geschrieben:
09.06.2023, 11:41
Entscheidend ist aber, dass im Script dann unnötige Mehrfachausgaben verhindert werden.
[...]
Und ja, die werden auch mehrfach getriggert, macht aber nichts, wenn der Aufruf im Script ins Leere läuft.

Ecopunt
Beiträge: 16
Registriert: 11.06.2019, 11:11
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal

Re: Bedingungen werden doppelt aktiviert

Beitrag von Ecopunt » 09.06.2023, 11:54

MichaelN hat geschrieben:
09.06.2023, 11:50
Hast du aus Änderung ein Aktualisierung gemacht?
Entschuldigung, Fehler.

Ich bin Holländer, also Deutsch ist nicht meine Muttersprache :)

Ich versuch jetzt mal so:

Naamloos3.jpg

Ecopunt
Beiträge: 16
Registriert: 11.06.2019, 11:11
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal

Re: Bedingungen werden doppelt aktiviert

Beitrag von Ecopunt » 09.06.2023, 11:55

Ecopunt hat geschrieben:
09.06.2023, 11:54
MichaelN hat geschrieben:
09.06.2023, 11:50
Hast du aus Änderung ein Aktualisierung gemacht?
Entschuldigung, Fehler.

Ich bin Holländer, also Deutsch ist nicht meine Muttersprache :)

Ich versuch jetzt mal so:


Naamloos3.jpg

Resultat ist jetzt, beim schliessen der SWDO:


11:54:54 09.06.2023 R001 status Fancoil: 0 | Temp: 24,8 | Gewenst: 17,0 | Deur: open
11:54:56 09.06.2023 R001 status Fancoil: 3 | Temp: 24,8 | Gewenst: 17,0 | Deur: dicht

Hier passiert also: Der absenktemperatur ist schon von 12 auf 17 hochgegangen (logisch, weil Gruppe), und direkt demnächst wird der neue Status von SWDO als neuer trigger verarbeitet.

Ecopunt
Beiträge: 16
Registriert: 11.06.2019, 11:11
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal

Re: Bedingungen werden doppelt aktiviert

Beitrag von Ecopunt » 09.06.2023, 11:59

Im Skript mache ich eigentlich nur dies, richtung der DRSI. Der wird weiter im skript angesteuert an hand vom variabele "fancoil":

Code: Alles auswählen

if ((status_SWDO == 0) && (actual >= threshold_cooling))  {
  if		(delta > (minimum_delta + 2*fancoil_delta))	{ fancoil = 3; }
  elseif	(delta > (minimum_delta + fancoil_delta))	{ fancoil = 2; }
  elseif	(delta > (minimum_delta))			{ fancoil = 1; }
}

Matsch
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: Bedingungen werden doppelt aktiviert

Beitrag von Matsch » 09.06.2023, 12:19

Du setzt die Variable auf einen Wert, ohne vorher zu testen, ob sie nicht schon den Wert hat. Das ist mit Abfangen gemeint.
Allerdings stellt das mehrfache Beschreiben einer (lokalen) Variablen ja auch keinen Beinbruch dar - es sei denn, man benutzt sie für eine SV und wertet diese auch wieder mit Bei Aktualisierung aus.

Allerdings zeigst du uns ja nicht, wie die Variablen definiert sind und was du mit dem zugewiesenen Wert NACH der if-Bedingung überhaupt machst.

Es steht zu befürchten, dass du die Ausgabe letztlich auch wieder ohne Abfangen von Werten ohne Änderung ausführst.
Zuletzt geändert von Matsch am 09.06.2023, 13:27, insgesamt 1-mal geändert.

MichaelN
Beiträge: 9679
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 700 Mal
Danksagung erhalten: 1626 Mal

Re: Bedingungen werden doppelt aktiviert

Beitrag von MichaelN » 09.06.2023, 12:53

Das Skript ist doch nicht vollständig?
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

Matsch
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: Bedingungen werden doppelt aktiviert

Beitrag von Matsch » 09.06.2023, 13:00

MichaelN hat geschrieben:
09.06.2023, 12:53
Das Skript ist doch nicht vollständig?
Nicht mehr als 10 g Salami am Tag, weißt du doch!

Ecopunt
Beiträge: 16
Registriert: 11.06.2019, 11:11
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal

Re: Bedingungen werden doppelt aktiviert

Beitrag von Ecopunt » 09.06.2023, 13:32

Anbei das ganze skript, die Gruppe und die settings der Gruppe.

Danke für's mitdenken.

Edit 9-6-2023 18:15: Script code teilweise gelöscht, weil Auftrag von Kunde. Bitte schick ein Privat für info.

Code: Alles auswählen

...

var sysvar =			dom.GetObject(variable).Value();
var fancoil =			0;

var status_SWDO =		dom.GetObject(SWDO#":1.STATE").Value();

if ((status_SWDO == 0) && (actual >= threshold_cooling))  {
  if		(delta > (minimum_delta + 2*fancoil_delta))	{ fancoil = 3; }
  elseif	(delta > (minimum_delta + fancoil_delta))	{ fancoil = 2; }
  elseif	(delta > (minimum_delta))			{ fancoil = 1; }
}

if(fancoil != sysvar) {    
  if (fancoil == 0) {
     dom.GetObject(DRSI#":6.STATE").State(0);
     dom.GetObject(DRSI#":10.STATE").State(0);
     dom.GetObject(DRSI#":14.STATE").State(0);
     dom.GetObject(DRSI#":18.STATE").State(0);
  }
  elseif (fancoil == 1) {
     dom.GetObject(DRSI#":6.STATE").State(1);
     dom.GetObject(DRSI#":10.STATE").State(1);
     dom.GetObject(DRSI#":14.STATE").State(0);
     dom.GetObject(DRSI#":18.STATE").State(0);
  }
  elseif (fancoil == 2) {
     dom.GetObject(DRSI#":6.STATE").State(1);
     dom.GetObject(DRSI#":10.STATE").State(0);
     dom.GetObject(DRSI#":14.STATE").State(1);
     dom.GetObject(DRSI#":18.STATE").State(0);
  }
  elseif (fancoil == 3) {
     dom.GetObject(DRSI#":6.STATE").State(1);
     dom.GetObject(DRSI#":10.STATE").State(0);
     dom.GetObject(DRSI#":14.STATE").State(0);
     dom.GetObject(DRSI#":18.STATE").State(1);
  }
}

Naamloos4.jpg

Naamloos5.jpg
Zuletzt geändert von Ecopunt am 09.06.2023, 18:19, insgesamt 2-mal geändert.

Antworten

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