Neue Firmware - Program läuft nicht mehr - Hilfe!!!

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

dtp
Beiträge: 10659
Registriert: 21.09.2012, 08:09
System: CCU
Wohnort: Stuttgart
Hat sich bedankt: 321 Mal
Danksagung erhalten: 501 Mal

Re: Neue Firmware - Program läuft nicht mehr - Hilfe!!!

Beitrag von dtp » 29.11.2017, 07:20

hpk hat geschrieben: Müsste das im Code nicht
object ventilAktorDP = (dom.GetObject(ID_CHANNELS).Get(VentilSchalterKanal)).DPByHssDP("STATE").Value();
heissen??
Nee. Das ist schon korrekt so, da im Skript später noch der Wert des Datenpunkts abgefragt und gesetzt wird.
CCU3 mit stets aktueller FW und den Addons "CUxD" und "Programmedrucken", ioBroker auf Synology DiskStation DS718+ im Docker-Container;
einige Projekte: zentrales Push-Nachrichten-Programm zPNP, DoorPi-Videotürsprechanlage, An- und Abwesenheitsdetektion per Haustürschloss, zentrales Programm zur Steuerung von Beschattungsgeräten zBSP.

hpk
Beiträge: 44
Registriert: 01.12.2011, 19:15

Re: Neue Firmware - Program läuft nicht mehr - Hilfe!!!

Beitrag von hpk » 30.11.2017, 13:50

Hallo hab jetzt den ersten Teil getestet - bekomme als Ausgabe:

Code: Alles auswählen

Aktuelle Temperatur: 23.400000
Ziel-Temperatur: 26.000000
Ventil-Zustand: false
Müsste bei Ventil-Zustand nicht 0 oder 1 stehen?

MFG

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

Re: Neue Firmware - Program läuft nicht mehr - Hilfe!!!

Beitrag von Bratmaxe » 30.11.2017, 15:29

Ich hätte jetzt auch 0 oder 1 erwartet, false deutet darauf hin, das der Kanal nicht gefunden wurde.

Kannst du aber sleber teste, indem du den aktor einschaltest und das Skript erneut ausführst. Wenn dann "true" Zurück kommt weisst du das die rückgabe false,ture ist und wenn dort immer noch false steht, dann ist vermutlich der Aktorname falsch. Der Datenpunkt sollte stimmen!

kannst nu mal versuchen aus dem object ein var zu machen, da du ja kein object, sondern einen Wert zurück erhälst. Aber die Homematic deklariert die Variabeln eh so um wie die deklariert werden. Von daher am besten immer var verwende, das stimmt dann immer
Gruß Carsten

hpk
Beiträge: 44
Registriert: 01.12.2011, 19:15

Re: Neue Firmware - Program läuft nicht mehr - Hilfe!!!

Beitrag von hpk » 30.11.2017, 15:34

Habe es jetzt nochmal mit eingeschalteten Aktor getestet - und ja jetzt wird der Wert true ausgegeben.

Mfg

hpk
Beiträge: 44
Registriert: 01.12.2011, 19:15

Re: Neue Firmware - Program läuft nicht mehr - Hilfe!!!

Beitrag von hpk » 30.11.2017, 15:37

kannst nu mal versuchen aus dem object ein var zu machen, da du ja kein object, sondern einen Wert zurück erhälst. Aber die Homematic deklariert die Variabeln eh so um wie die deklariert werden. Von daher am besten immer var verwende, das stimmt dann immer
Weiß leider nicht wie ich aus einem object ein var machen kann?

Meinst Du aus object ventilAktorDP - var ventilAktorDP schreiben?

Mfg

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

Re: Neue Firmware - Program läuft nicht mehr - Hilfe!!!

Beitrag von Bratmaxe » 30.11.2017, 15:51

ja das meinte ich, ist aber nicht wichtig, nur für die Lesbarkeit. Funktion ist ja gegeben!

jetzt kannst du den Code testen..
aber wie in meinem ersten post geschrieben du musst + und - der hysterese tauschen, sonst ist es ein offset!

Code: Alles auswählen

string VentilSchalterKanal = "Buero.Heizung:1";
string Raumregler = "Buero.Thermostat";
real hysterese = 0.5;

real aktuelleTemperatur; real zielTemperatur; object ventilAktorDP;

aktuelleTemperatur = (dom.GetObject(ID_CHANNELS).Get(Raumregler#":2")).DPByHssDP("ACTUAL_TEMPERATURE").Value();
zielTemperatur = (dom.GetObject(ID_CHANNELS).Get(Raumregler#":2")).DPByHssDP("SET_TEMPERATURE").Value();
ventilAktorDP = (dom.GetObject(ID_CHANNELS).Get(VentilSchalterKanal)).DPByHssDP("STATE");

if(aktuelleTemperatur < (zielTemperatur - hysterese)){ !Aktor einschalten, wenn Temperatur zu niedrig
  if(!ventilAktorDP.Value()){ventilAktorDP.State(1);}
}
else{
  if(aktuelleTemperatur > (zielTemperatur + hysterese)){ !Aktor ausschalten, wenn Temperatur zu hoch
    if(ventilAktorDP.Value()){ventilAktorDP.State(0);}
  }
}
Gruß Carsten

hpk
Beiträge: 44
Registriert: 01.12.2011, 19:15

Re: Neue Firmware - Program läuft nicht mehr - Hilfe!!!

Beitrag von hpk » 30.11.2017, 15:56

ja das meinte ich, ist aber nicht wichtig, nur für die Lesbarkeit. Funktion ist ja gegeben!

jetzt kannst du den Code testen..
Funktioniert leider nicht - hab es gerade getestet - der Aktor schaltet leider nicht.

Mfg

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

Re: Neue Firmware - Program läuft nicht mehr - Hilfe!!!

Beitrag von Bratmaxe » 30.11.2017, 16:07

dann versuche es mal bitte mit den Codezeilen:

Code: Alles auswählen

string VentilSchalterKanal = "Buero.Heizung:1";
string Raumregler = "Buero.Thermostat";
real hysterese = 0.5;

real aktuelleTemperatur; real zielTemperatur; var ventilAktorDP;

aktuelleTemperatur = (dom.GetObject(ID_CHANNELS).Get(Raumregler#":2")).DPByHssDP("ACTUAL_TEMPERATURE").Value();
zielTemperatur = (dom.GetObject(ID_CHANNELS).Get(Raumregler#":2")).DPByHssDP("SET_TEMPERATURE").Value();
ventilAktorDP = (dom.GetObject(ID_CHANNELS).Get(VentilSchalterKanal)).DPByHssDP("STATE");

if(aktuelleTemperatur < (zielTemperatur - hysterese))
{	!Aktor einschalten, wenn Temperatur zu niedrig
	if(ventilAktorDP.Value() == false)
	{
		ventilAktorDP.State(1);
	}
}
else
{
	if(aktuelleTemperatur > (zielTemperatur + hysterese))
	{ !Aktor ausschalten, wenn Temperatur zu hoch
		if(ventilAktorDP.Value() == true)
		{
			ventilAktorDP.State(0);
		}
	}
}
Gruß Carsten

hpk
Beiträge: 44
Registriert: 01.12.2011, 19:15

Re: Neue Firmware - Program läuft nicht mehr - Hilfe!!!

Beitrag von hpk » 30.11.2017, 17:51

Hallo vielen Dank!! Jetzt funktioniert es!!

MFG

Antworten

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