Hallo, da bin ich mal wieder....
bisher lief der Datenabruf aus der UVR1611 im 15-Minutenabstand blendend.
Nun schalte seit einigen Tagen zusätzlich die Weihnachtsbeleuchtung im Garten über 4 verschiedenen Zeitmodule (2 für AN abends und morgens und 2 für AUS abends und morgens). Klappt auch alles..... einige Stunden lang allerdings nur:
DENN:
- Nach eingen Stunden ist es so, dass AN oder AUS nicht mehr funktioniert. Die Weihnachtsbeleuchtung bleibt aA oder geht nicht AUS. Manuelle Ansteuerung der SONOFF funktioniert.
- Wenn ich die CCU3 neu starte und alle Programme Ihren Erstlauf machen, geht´s wieder. Der Code an sich funktioniert also.
- Wenn ich dann den UVR1611-Auslesecode ausschalte, läuft alles wieder tagein, tagaus.
- Wenn ich dann den UVR1611-Code wieder AN-schalte um den Datenabruf zu starten: Läuft´s nach halben Tag oder so wieder nicht mehr.
ich vermute, dass ich irgendwelche überläufe im UVR1611-Code in der CCU erzeuge, mir fehlt es aber an Literatur.
Hier mal der komplette Programmcode, vielleicht fällt Euch was ein/auf:
! UVR 1611 - Temperaturdaten aus Bl-Net auslesen und in Sysvar Typ Zahl speichern by Alchy
! Quelltext Basis aus
https://homematic-forum.de
string IP ="192.168.0.90";
string KNOTEN = "8D200101\t8D200201\t8D200B01\t8D200C01\t8D200301\t8D200401\t8D200501\t8D200601\t09220201\t8D200701"; !" abzufragende Knotenpunkte mit \t getrennt
var fuellstand =0;
string index;
string name;
foreach (index, KNOTEN) {
var url = "http://"#IP#"/c_index.htm?C="#index;
dom.GetObject("CUxD.CUX2801002:1.CMD_SETS").State("wget -q -O - '"#url#"'");
dom.GetObject("CUxD.CUX2801002:1.CMD_QUERY_RET").State(1);
string srueck = dom.GetObject("CUxD.CUX2801002:1.CMD_RETS").State();
string s1tmp = srueck.StrValueByIndex(";",1);
string saus= s1tmp.Substr(0, s1tmp.Length()-5);
!---- Komma in der Temperatur durch ein Punkt ersetzen um realen Wert in Zahl wandeln zu koennen-----------------
integer ikomma = saus.Find(",");
string saus1 = saus.Substr(0, ikomma);
string saus2 = saus1 + "." + saus.Substr(ikomma + 1, 5);
var zaus = saus2.ToFloat();
string name = "unbekannt";
!----- Namen der Systemvariablen für den entsprechenden Knotenwert
if (index == "8D200101") {name = "UVR1611 HK-Vorlauf";}
if (index == "8D200201") {name = "UVR1611 HK-Rücklauf";}
if (index == "8D200B01") {name = "UVR1611 FBH-Vorlauf";}
if (index == "8D200C01") {name = "UVR1611 FBH-Rücklauf";}
if (index == "8D200701") {name = "UVR1611 Holz VL";}
!***** Sonderbehandlung der Aussentemperatur, weil nicht über Sensor, sonder digital über Netzwerk
if (index == "09220201") {
name = "UVR1611 Aussentemperatur";
saus= srueck.Substr(18, 3);
var zaus = saus.ToFloat()/10; }
!***** Speicherstände addieren
if (index == "8D200301") {
name = "UVR1611 Speicher 4 oben";
fuellstand=fuellstand+zaus; }
if (index == "8D200401") {
name = "UVR1611 Speicher 3";
fuellstand=fuellstand+zaus; }
if (index == "8D200501") {
name = "UVR1611 Speicher 2";
fuellstand=fuellstand+zaus; }
if (index == "8D200601") {
name = "UVR1611 Speicher 1 unten";
fuellstand=fuellstand+zaus; }
object svspeicher = dom.GetObject(name);
if (svspeicher) { svspeicher.State(zaus); }
}
!***** am Ende die Summer vom Speicher und auch die Uhrzeit noch in die variablen rein schreiben
dom.GetObject("UVR1611 Speicher Fuellstand").State(fuellstand);
string sDate = system.Date("%d.%m.%Y %H:%M");
dom.GetObject("UVR1611 Uhrzeit").State(sDate);
Viele Grüße aus Berlin und schönen 2. Advent
Andreas