Wechsel von CCU2 auf CCU3: Script-Problem

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

farouche
Beiträge: 24
Registriert: 28.02.2016, 19:02
Hat sich bedankt: 1 Mal
Danksagung erhalten: 4 Mal

Re: Wechsel von CCU2 auf CCU3: Script-Problem

Beitrag von farouche » 03.10.2022, 13:33

MichaelN hat geschrieben:
03.10.2022, 12:25
Syntaktisch finde ich da auf Anhieb auch keine Fehler. Ich würde mal den Autor des Skript befragen.
Habe ich gemacht. Er schreibt aber auf seiner Website, dass er seine Anfragen nur noch im Triage-Stil beantworten kann. Deswegen hatte ich auch den Weg gewählt hier im Forum zu fragen.

Dass Dir hier keine Syntax-Fehler auffallen, ist ja schon einmal höchst interessant. Das würde für mich dann ja andeuten, dass die CCU3 vielleicht doch ganz andere Probleme hat. Denn wir bereits gesagt, läuft das Programm mit dem Script so ja anstandslos auf der bisherigen CCU2. Oder ist diese Schlussfolgerung zu voreilig?

Meine beiden anderen - wenn vielleicht ja auch völlig unsinnigen - Überlegungen waren ja entweder ein Defekt der CCU3 oder ein Problem mit dem Backup.

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

Re: Wechsel von CCU2 auf CCU3: Script-Problem

Beitrag von MichaelN » 03.10.2022, 13:52

Mir fehlt die Fantasie welcher Defekt an der CCU einen Runtime Error auslösen sollte.
Wie testest Du denn das Skript?
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 +++

Benutzeravatar
Black
Beiträge: 5480
Registriert: 12.09.2015, 22:31
System: Alternative CCU (auf Basis OCCU)
Wohnort: Wegberg
Hat sich bedankt: 424 Mal
Danksagung erhalten: 1074 Mal
Kontaktdaten:

Re: Wechsel von CCU2 auf CCU3: Script-Problem

Beitrag von Black » 03.10.2022, 14:08

Scriptruntimeerror ist gerne ein Indiz für das falsche verwenden von einer Methode auf einen objekttyp.

Wobei ich mal nach den ersten Zeilen schon blind sage, dass dieser Fehler unter Script testen (so auch) auftritt.

Black
Wenn das Fernsehprogramm immer mehr durch nervende Werbung unterbrochen wird und der Radiomoderator nur noch Müll erzählt, ist es besser, die Zeit für sinnvolle Dinge zu nutzen -
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg

Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann

Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W

technical contribution against annoying advertising

farouche
Beiträge: 24
Registriert: 28.02.2016, 19:02
Hat sich bedankt: 1 Mal
Danksagung erhalten: 4 Mal

Re: Wechsel von CCU2 auf CCU3: Script-Problem

Beitrag von farouche » 05.10.2022, 16:52

Danke für Eure Hilfe.

Ich habe weiter versucht das Problem in dem Script zu finden. Auch wenn ich dank der Hilfestellungen das Problem auf die While-Schleife eingrenzen konnte, reichen meine Kenntnisse anscheinend nicht aus, um das Problem zu lösen. :roll:

Ich bin jetzt auf die von @Xel66 und @robbi77 vorgeschlagene Steuerung ganz ohne Script ausgewichen.

Sollte sich der Autor des Scripts auf meine Anfrage hin melden und es eine Lösung geben, werde ich diese hier teilen.

Danke noch einmal!

[sprotte80]
Beiträge: 336
Registriert: 05.10.2020, 18:37
System: CCU
Hat sich bedankt: 30 Mal
Danksagung erhalten: 25 Mal

Re: Wechsel von CCU2 auf CCU3: Script-Problem

Beitrag von [sprotte80] » 05.10.2022, 18:20

Hi,
MichaelN hat geschrieben:
03.10.2022, 12:25
Syntaktisch finde ich da auf Anhieb auch keine Fehler. Ich würde mal den Autor des Skript befragen.
Oder einfach das Script prüfen.

bei der prüfung vom Script von Tobias mit den HM-Internals wirft der Range-Check einen Fehler

Code: Alles auswählen

 Range-Error in Zeile 26 
   Ausdruck CndSingleCondition(i_count) ausserhalb der Höchstgrenze
     o_dp = dom.GetObject(o_prg.Rule().RuleCondition(0).CndSingleCondition(i_count).LeftVal());
i_count ist dort größer wie als die höchste Index vom id_array von CndSingleConditions()
Rückgabeobject von CndSingleCondition(i_count) ist null und somit bäng von .LeftVal()

Thomas
Wenn du keine App zur Bedienung brauchst, dann hast du kein Smarthome, sondern nur eine angefangene Baustelle, oder nur ein unsmartes Autohome.

Homematic-Script - ScriptLexikon für alle
Methoden Konstanten
Hilfe und Infos erwünscht. Alle können mitmachen. Keine Levels. Keine Geheimtuerei.

Tyfys
Beiträge: 551
Registriert: 17.04.2021, 17:12
System: CCU
Hat sich bedankt: 27 Mal
Danksagung erhalten: 125 Mal

Re: Wechsel von CCU2 auf CCU3: Script-Problem

Beitrag von Tyfys » 06.10.2022, 17:46

Könnte dieser Fehler :
[sprotte80] hat geschrieben:
05.10.2022, 18:20
i_count ist dort größer wie als die höchste Index vom id_array von CndSingleConditions()
Rückgabeobject von CndSingleCondition(i_count) ist null und somit bäng von .LeftVal()
durch diese kleine Änderung am Ende der while-Schleife

Code: Alles auswählen

while (o_dp) {
   o_chn = dom.GetObject(o_dp.Channel());
   o_dp_err=o_chn.DPByHssDP ("ERROR");
   if (!o_dp_err) { 
     o_dp_err=o_chn.DPByHssDP ("FAULT_REPORTING");
   }
   if (o_dp_err) {
     if (o_dp_err.Value() == 0) {
       i_summe = i_summe + o_dp.Value();
     }
   } else {
     i_summe = i_summe + o_dp.Value();
   }
   i_count = i_count + 1;
    if (dom.GetObject(o_prg.Rule().RuleCondition(0).CndSingleCondition(i_count))) { ;
        o_dp = dom.GetObject(o_prg.Rule().RuleCondition(0).CndSingleCondition(i_count).LeftVal());
    } else {
        break;
    }
}
nicht behoben sein ?
Gruß
Harry

Benutzeravatar
Black
Beiträge: 5480
Registriert: 12.09.2015, 22:31
System: Alternative CCU (auf Basis OCCU)
Wohnort: Wegberg
Hat sich bedankt: 424 Mal
Danksagung erhalten: 1074 Mal
Kontaktdaten:

Re: Wechsel von CCU2 auf CCU3: Script-Problem

Beitrag von Black » 06.10.2022, 18:54

Den ganzen Schleifenaufbau finde ich recht "bitchy" gelöst

Die genaue Anzahl ist als Aufzählung (halt der IdArray) bekannt, da ist while als schleife eher die falsche Auswahl. foreach wäre hier meiner Meinung (und meinem Stil ) nach die bessere ALternative.

Derartige Schleifen setze ich xFach in den Diagnoseroutinen und der Programm Backup Erzeugung des SDV ein, ich baue die aber nach folgendem Schema auf:

Code: Alles auswählen

string sSCND;
object oDP;
object oPRG=dom.GetObject("$this$");
if ((oPRG) && (oPRG.Type()==OT_PROGRAM)) {
  foreach (sSCND,oPRG.Rule().RuleCondition(0).CndSingleConditions()) {
    oDP=dom.GetObject ((dom.GetObject(sSCND)).LeftVal());
    if (oDP) {
       !Tue irgendwas, hier die Auswertung
    } else {
      ! das war kein gültiges Objekt
    }  !if 
  } !foreach
} else {WriteLine ("Das war nix, kein gültiges Programmobject");}       
}
While bei: Schleifengrösse vorher nicht bekant
foreach: Schleifengrösse ist vorher bekannt bzw durch den Type alleine schon definiert

Black
Zuletzt geändert von Black am 06.10.2022, 20:19, insgesamt 1-mal geändert.
Wenn das Fernsehprogramm immer mehr durch nervende Werbung unterbrochen wird und der Radiomoderator nur noch Müll erzählt, ist es besser, die Zeit für sinnvolle Dinge zu nutzen -
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg

Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann

Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W

technical contribution against annoying advertising

Tyfys
Beiträge: 551
Registriert: 17.04.2021, 17:12
System: CCU
Hat sich bedankt: 27 Mal
Danksagung erhalten: 125 Mal

Re: Wechsel von CCU2 auf CCU3: Script-Problem

Beitrag von Tyfys » 06.10.2022, 20:19

Ich hab mir jetzt nicht die ganze Logik des Skriptes zu Gemüte gebracht.
Habe eben nur den Fehler am Schleifenende abgefangen.


Deine Konstruktion ist natürlich optimal.

Hat mich auch wieder ein Stückchen weiter gebracht.
Und auch auf eine Idee für eine Optimierung eines meiner Skripte.

BTW: kleiner Tippfehler oDP <> oPD
Gruß
Harry

Benutzeravatar
Black
Beiträge: 5480
Registriert: 12.09.2015, 22:31
System: Alternative CCU (auf Basis OCCU)
Wohnort: Wegberg
Hat sich bedankt: 424 Mal
Danksagung erhalten: 1074 Mal
Kontaktdaten:

Re: Wechsel von CCU2 auf CCU3: Script-Problem

Beitrag von Black » 06.10.2022, 20:20

Tyfys hat geschrieben:
06.10.2022, 20:19
BTW: kleiner Tippfehler oDP <> oPD
Done
Wenn das Fernsehprogramm immer mehr durch nervende Werbung unterbrochen wird und der Radiomoderator nur noch Müll erzählt, ist es besser, die Zeit für sinnvolle Dinge zu nutzen -
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg

Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann

Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W

technical contribution against annoying advertising

Antworten

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