Nach Update auf 3.57.5 ständig Duty Cycle

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

andy1972
Beiträge: 105
Registriert: 21.10.2012, 02:49
Hat sich bedankt: 11 Mal

Nach Update auf 3.57.5 ständig Duty Cycle

Beitrag von andy1972 » 15.05.2021, 11:07

Moin aus dem Sauerland,
ich habe in der SuFu nichts passendes gefunden, daher frage ich mal hier....
Ich habe meine CCU3 von 3.55.10 auf 3.57.5 upgedatet.
Bis dato hatte ich keinerlei Probleme bezüglich Duty Cycle.
Seit dem Update läuft nach ca. 2-3 Tagen und ohne erkennbaren Grund der Duty Cycle überraschend voll und es geht natürlich nichts mehr.
Ich schaue jeden Tag mehrfach auf die WebUi, es ist alles normal und er bewegt sich zwischen 10-15%. Dann irgendwann wundere ich mich, warum diverse Szenarien nicht ausgelöst werden und schaue wieder nach.... alles gestört.
Wenn ich dann neu starte, habe ich erstmal wieder Ruhe; irgendwann schlägt er wieder zu.
ich habe dann ein Downgrade auf 3.55.10 gemacht und für 2 Wochen war alles normal .
Auch hatte ich einen Tür-Fensterkontakt in Verdacht, aber der war es nicht. Der ist mittlerweile abgelernt.
Also nach 2 Wochen wieder Update auf 3.57.5 und das Dilemma ging von vorne los.
Ich kann mir das nicht erklären und bei gut 50 Aktoren will ich auch nicht jeden einzelnen vom Netz nehmen.
Ich bin nun einige zeit wieder auf der alten Version unterwegs, ohne irgendwelcher Probleme.
Ich könnte die CCU auch nachts kurz vom Strom nehmen und nach 2 Minuten wieder neu booten lassen, aber das löst ja eigentlich das Problem auch nicht. Das verzweifelt mich gerade echt...
Könnt ihr mir sagen, was das ist, bzw. wo der Fehler liegt?
Was benötigt ihr ggf. noch an Infos, die ich vielleicht vergessen habe aufzuführen?
Oder soll ich einfach bei der 3.55.10 bleiben?
Viele Grüße
Andy

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

Re: Nach Update auf 3.57.5 ständig Duty Cycle

Beitrag von MichaelN » 15.05.2021, 11:21

DC aufzeichnen und prüfen welche Programme zum Zeitpunkt des Anstieg arbeiten

Programme deaktivieren und schauen ob sich das ändert.

Vor allemPProgramme mit Skripten sind erstmal verdächtig

Und prinzipiell jede Middleware. Aber die hast du ja nicht, sonst hättest du das ja erwähnt.

Und FW Update laufen natürlich auch keine
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 +++

andy1972
Beiträge: 105
Registriert: 21.10.2012, 02:49
Hat sich bedankt: 11 Mal

Re: Nach Update auf 3.57.5 ständig Duty Cycle

Beitrag von andy1972 » 15.05.2021, 11:51

Moin Michael,
Programme die gerade beim Duty Cylce aktiv waren (soweit ich das feststellen konnte) hatte ich auch schon mal deaktiviert.
Da waren auch Skripte drin. Aber das war es nicht...
Komisch ist, dass es auch erst nach ein paar Tagen auftritt und nie zur selben Zeit oder so. Dann wäre ich ja auch schon einen Schritt weiter.
Und warum ist das erst nach dem Update?? Das verstehe ich nicht.
Was ist denn Middleware?
Ich bin leider kein Vollprofi. :oops:

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

Re: Nach Update auf 3.57.5 ständig Duty Cycle

Beitrag von MichaelN » 15.05.2021, 11:52

Skripte die Daten von extern holen und verarbeiten?
Oder Skripte die aufwändige DInge machen?
Oder häufig aufgerufen werden?
Ich würde mir die näher ansehen, ob die wirklich unproblematisch sind.

Middleware: Software, die von extern auf deine CCU zugreift bzw. die CCU benutz die HM(ip) Geräte zusteuern, während die ganze Logik nicht auf der CCU abgebildet wird.
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 +++

andy1972
Beiträge: 105
Registriert: 21.10.2012, 02:49
Hat sich bedankt: 11 Mal

Re: Nach Update auf 3.57.5 ständig Duty Cycle

Beitrag von andy1972 » 15.05.2021, 12:01

Ah ok. Also Middleware habe ich dann nicht :D
Ich hab tatsächlich ein Skrippt, welches die Wetterdaten von Extern holt= Regen!
Vielleicht ist das der Auslöser :shock:
Abgefragt wird alle 4 Stunden...
und warum tritt das Ganze nur bei der neueren SW-Version auf?

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

Re: Nach Update auf 3.57.5 ständig Duty Cycle

Beitrag von MichaelN » 15.05.2021, 12:03

andy1972 hat geschrieben:
15.05.2021, 12:01
und warum tritt das Ganze nur bei der neueren SW-Version auf?
Weil das Skript ungüsntig programmiert ist und dieser Effekt sich jetzt erst bemerkbar macht?
Du könntest uns das Skript zeigen (in Code Tags </> bitte) oder das Programm deaktivieren und schauen ob sich an der Situation was ändert
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 +++

andy1972
Beiträge: 105
Registriert: 21.10.2012, 02:49
Hat sich bedankt: 11 Mal

Re: Nach Update auf 3.57.5 ständig Duty Cycle

Beitrag von andy1972 » 15.05.2021, 12:08

das ist das Skript. Ich hoffe, dass ich das so richtig eingefügt habe...
Abgefragt wird periodisch alle 4 Stunden...

Code: Alles auswählen

var url = "http://api.openweathermap.org/data/2.5/forecast?id=2871983&appid=d01105b7e79fedd3591d91bbfbacf966&lang=de&mode=xml&units=metric&lang=de"; 

dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State("wget -q -O - '"#url#"'");
dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
var weatherData = dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();
WriteLine(weatherData);

integer startIndex = weatherData.Find("forecast");
integer endIndex = weatherData.Find("/forecast");
WriteLine("StartIndex: " # startIndex);
WriteLine("EndIndex: " # endIndex);
string forecast = weatherData.Substr(startIndex, endIndex);
WriteLine(forecast);

real rain00_24 = 0.0;
real rain24_48 = 0.0;
real rain48_72 = 0.0;
real rain72_96 = 0.0;
real rain96_120 = 0.0;

integer counter = 0;
integer len = forecast.Length();
integer start = forecast.Find("time");
integer end = forecast.Find("/time");

while (start > 0)
{
  counter = counter + 1;
  !WriteLine("+++ " #counter # " +++");

  string currentForecast = forecast.Substr(start, end);
  !WriteLine(currentForecast);
  
  integer noValue = currentForecast.Find("precipitation  /precipitation");
  if (noValue < 0)
  {
     integer rainStart = currentForecast.Find(" precipitation");
     integer rainEnd = currentForecast.Find("/precipitation");
     string rainString = currentForecast.Substr(rainStart, rainEnd);
     !WriteLine(rainString);
    
     integer rainValueStart = rainString.Find("value=\"");
     integer rainValueEnd = rainString.Find(" type=\"");
     string rainValue = rainString.Substr(rainValueStart + 7, rainValueEnd - rainValueStart + 8);
     real rainValueReal = rainValue.ToFloat();
     !WriteLine(rainValueReal); 
    
     if (rainValueReal > 0)
     {
       if (counter <= 8)
       {
       	 rain00_24 = rain00_24 + rainValueReal;
       }
       elseif (counter <= 16)
       {
       	 rain24_48 = rain24_48 + rainValueReal;
       }
       elseif (counter <= 24)
       {
       	 rain48_72 = rain48_72 + rainValueReal;
       }
       elseif (counter <= 32)
       {
       	 rain72_96 = rain72_96 + rainValueReal;
       }
       elseif (counter <= 40)
       {
       	 rain96_120 = rain96_120 + rainValueReal;
       }
     }
  }  
  
  ! ##### Prepare next loop ######
  integer newEnd = end + 5; 
  integer newLength = len - end -5;
  if (newLength > 0)
  {
	forecast = forecast.Substr(newEnd, newLength);
    len = forecast.Length();
    start = forecast.Find("time");
    end = forecast.Find("/time");
  }
  else 
  {  
	  start = -1;
  }
    
  
  ! ##### Block infinite loop ######
  if (counter == 50)
  {
    WriteLine("Endlosschleifenabssicherung")
    start = -1;
  }
}

dom.GetObject("Niederschlag_Std.00_24").State(rain00_24);
dom.GetObject("Niederschlag_Std.24_48").State(rain24_48);
dom.GetObject("Niederschlag_Std.48_72").State(rain48_72);
dom.GetObject("Niederschlag_Std.72_96").State(rain72_96);
dom.GetObject("Niederschlag_Std.96_120").State(rain96_120);

!WriteLine("00_24: " # rain00_24);
!WriteLine("24_48: " # rain24_48);
!WriteLine("48_72: " # rain48_72);
!WriteLine("72_96: " # rain72_96);
!WriteLine("96_120: " # rain96_120);
/code]

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

Re: Nach Update auf 3.57.5 ständig Duty Cycle

Beitrag von MichaelN » 15.05.2021, 12:51

Das scheint OK zu sein. Alle 4 Std. ist auch unkritisch. Sehe nicht das dies mit dem DC zusammenhängen kann.
Andere Programme die in sehr kurzem Abstand aufgerufen werden?
Trigger mit "bei Aktualisierung"?
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 +++

andy1972
Beiträge: 105
Registriert: 21.10.2012, 02:49
Hat sich bedankt: 11 Mal

Re: Nach Update auf 3.57.5 ständig Duty Cycle

Beitrag von andy1972 » 15.05.2021, 13:49

Ich schau mal weiter... Vielen lieben Dank schon mal für deine Hilfe!!

andy1972
Beiträge: 105
Registriert: 21.10.2012, 02:49
Hat sich bedankt: 11 Mal

Re: Nach Update auf 3.57.5 ständig Duty Cycle

Beitrag von andy1972 » 15.05.2021, 14:04

Ich hätte hier zwei, welche auf "Aktualisierung" reagieren... einmal, dass Servicemeldungen automatisch bestätigt werden...
und dann noch den Stromzähler auslesen...

Code: Alles auswählen

! HomeMatic-Script
! "KOMMUNIKATION GESTöRT" BEHEBEN
! http://www.christian-luetgens.de/homematic/hardware/funkstoerungen/servicemeldungen/Servicemeldungen.htm

string itemID;
string address;
object aldp_obj;

foreach(itemID, dom.GetObject(ID_DEVICES).EnumUsedIDs()) {
   address = dom.GetObject(itemID).Address();
   aldp_obj = dom.GetObject("AL-" # address # ":0.STICKY_UNREACH");
   if (aldp_obj) {
     if (aldp_obj.Value()) {
       aldp_obj.AlReceipt();
     }
   }
}

!  Ende des Scripts
/code]
Dateianhänge
Bildschirmfoto 2021-05-15 um 13.56.00.png

Antworten

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