Script offene Fenster - Ausgabe Aktorname statt Raumname

WebUIs (DashUI, yahui, ...), Adapter (Hue, IRTrans, Sonos, ...), Logging, Scripting

Moderator: Co-Administratoren

matze-pe
Beiträge: 757
Registriert: 11.02.2013, 08:38
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal

Re: Script offene Fenster - Ausgabe Aktorname statt Raumname

Beitrag von matze-pe » 20.10.2015, 13:42

Dann verstehe ich es nicht, habe gerade mal ein Heizkörper aufgedreht.
Ventil springt kurze Zeit später auf 99%, der Inhalt der Variabel bleibt bei "null" stehen :roll:

Heizkörper Skript aus Vorlage:

Code: Alles auswählen

/**
 *
 *  Dieses Script schreibt in die Variable 100000 eine Komma-getrennte Liste aller Räume
 *  in denen eine Heizung aktiv ist
 *
 */


var nameGewerkHeizung = "Heizung";

setObject(100000, {
    Name: "Heizung Zusammenfassung",
    TypeName: "VARDP"
});


beheizteRaeumeFinden();

subscribe({func:"Heizung", name:/VALVE_STATE$/, change: "ne"}, function (obj) {
    beheizteRaeumeFinden();
});

function beheizteRaeumeFinden() {
    var idGewerkHeizung = regaIndex.Name[nameGewerkHeizung][0];
    var arrHeizung = regaObjects[idGewerkHeizung].Channels;
    var arrRaeume = regaIndex.ENUM_ROOMS;

    var arrBeheizteRaeume = [];

    for (var i = 0; i < arrRaeume.length; i++) {
        var idRaum = arrRaeume[i];
        var nameRaum = regaObjects[idRaum].Name;
        var arrRaumKanaele = regaObjects[idRaum].Channels;
        for (var j = 0; j < arrRaumKanaele.length; j++) {
            var idKanal = arrRaumKanaele[j];
            if (arrHeizung.indexOf(idKanal) != -1) {
                if (regaObjects[idKanal].DPs.VALVE_STATE && datapoints[regaObjects[idKanal].DPs.VALVE_STATE][0] > 0) {
                    if (arrBeheizteRaeume.indexOf(nameRaum) == -1) {
                        arrBeheizteRaeume.push(nameRaum);
                    }
                }

            }
        }

    }

    var text = arrBeheizteRaeume.join(", ");

    setState(100000, text);

}

Habe gerade ein Fehler im ccu.io.log gefunden:

Code: Alles auswählen

script-engine /opt/ccu.io/scripts/zusammenfassung-fenster.js TypeError: Cannot read property '0' of undefined
script-engine /opt/ccu.io/scripts/zusammenfassung-heizung.js TypeError: Cannot read property '0' of undefined
script-engine /opt/ccu.io/scripts/zusammenfassung-licht.js TypeError: Cannot read property '0' of undefined
CCU3 (80 Geräte, 105 Variablen, 50 Programme) * CCU.IO + DashUI + Apple HomeKit (Homebridge) auf Raspi2

ZAG
Beiträge: 65
Registriert: 08.12.2014, 08:09

Re: Script offene Fenster - Ausgabe Aktorname statt Raumname

Beitrag von ZAG » 20.10.2015, 14:05

Warte mal, vielleicht ist da noch "Schmutz" von vorher drin.
Schreibe mal im CCU.IO/Daten/Datenpunkte ganz bewusst was anderes rein als NULL bei deinen Variablen.

matze-pe
Beiträge: 757
Registriert: 11.02.2013, 08:38
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal

Re: Script offene Fenster - Ausgabe Aktorname statt Raumname

Beitrag von matze-pe » 20.10.2015, 14:11

Habe die 3 Variabeln manuell gefüllt, ccu.io neugestartet und script engine auch neugestartet.

O.g. Fehlermeldung wird im ccu.io.log weiterhin reingeschrieben.
CCU3 (80 Geräte, 105 Variablen, 50 Programme) * CCU.IO + DashUI + Apple HomeKit (Homebridge) auf Raspi2

ZAG
Beiträge: 65
Registriert: 08.12.2014, 08:09

Re: Script offene Fenster - Ausgabe Aktorname statt Raumname

Beitrag von ZAG » 20.10.2015, 14:12

Und die Variable wurde verändert oder steht immer noch dein Wert drin?
Bei allen 3 Scripten?

matze-pe
Beiträge: 757
Registriert: 11.02.2013, 08:38
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal

Re: Script offene Fenster - Ausgabe Aktorname statt Raumname

Beitrag von matze-pe » 20.10.2015, 14:13

Alle 3 stehen immer noch auf die von mir geänderten Werte
CCU3 (80 Geräte, 105 Variablen, 50 Programme) * CCU.IO + DashUI + Apple HomeKit (Homebridge) auf Raspi2

ZAG
Beiträge: 65
Registriert: 08.12.2014, 08:09

Re: Script offene Fenster - Ausgabe Aktorname statt Raumname

Beitrag von ZAG » 20.10.2015, 14:56

Also zur Zeit bin ich von hier mit meinem Latein am Ende.
Sorry.

Die Fehler die du da hast treten z.B. dann auf, wenn man ein leeres Array verarbeiten will.
Also wenn z.B. deine Raumabfrage keine Werte zurück liefert, dann geht das "for" in die Hose, weil es keine ".length" auslesen kann.

Das als erstmal letzter Hinweis von mir.
Vielleicht ist jemand besser bewandert.

alchy
Beiträge: 10761
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 65 Mal
Danksagung erhalten: 675 Mal

Re: Script offene Fenster - Ausgabe Aktorname statt Raumname

Beitrag von alchy » 20.10.2015, 21:20

Irgendwie habe ich den Faden hier verloren. :cry: Lich, verschluß, nun Heizung.
Willlst du vielleicht erst mal ein Problem angehen?

Ich benutze sowohl für Licht als auch für Verschluss jeweils Scripte für die Anzahl (der eingeschalteten bzw. offenen) und die entsprechenden Räume. Das funktioniert sehr gut.
Das Anzahlscript benutze ich gleichzeitig als Problemindikator für die Script Engine. :shock:

Alchy

Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.

© Sandra Pulsfort (*1974)

Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.

Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.

ZAG
Beiträge: 65
Registriert: 08.12.2014, 08:09

Re: Script offene Fenster - Ausgabe Aktorname statt Raumname

Beitrag von ZAG » 20.10.2015, 21:31

Er will Fenster, hat aber Licht und Heizung ebenfalls aktiviert, weil die ja funktionieren sollten, was sie aber nicht tun.
Er bekommt überall den gleichen Fehler, so als ob er gar keine Räume oder so hätte, jedenfalls nach dem Fehler, der im Log ausgeworfen wird.

alchy
Beiträge: 10761
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 65 Mal
Danksagung erhalten: 675 Mal

Re: Script offene Fenster - Ausgabe Aktorname statt Raumname

Beitrag von alchy » 20.10.2015, 22:35

Ich habe mal schnell das Script von >> H I E R << zusätzlich raufkopiert.

Es funktioniert, birgt aber ein paar Fallstricke die vielleicht die Ursache des "Nichtfunktionieren" sein:

1. es werden nur HM-Sec-SCo abgefragt ist dir das bewusst?
2. du musst mindestens einmal ein Fenster öffnen nach der Scriptinstallation und Neustart CCU.IO / Scriptengine


Alchy

Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.

© Sandra Pulsfort (*1974)

Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.

Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.

ZAG
Beiträge: 65
Registriert: 08.12.2014, 08:09

Re: Script offene Fenster - Ausgabe Aktorname statt Raumname

Beitrag von ZAG » 20.10.2015, 23:13

Sein Problem ist ja, dass er

Code: Alles auswählen

script-engine /opt/ccu.io/scripts/zusammenfassung-fenster.js TypeError: Cannot read property '0' of undefined
script-engine /opt/ccu.io/scripts/zusammenfassung-heizung.js TypeError: Cannot read property '0' of undefined
script-engine /opt/ccu.io/scripts/zusammenfassung-licht.js TypeError: Cannot read property '0' of undefined
bekommt.

Es laufen ja nicht mal die Scripts, die laufen müssten.
Sobald Heizung oder Licht funktionieren, können wir uns um den Rest kümmern.

Ich denke, er hat am Fensterscript schon rum gebastelt und teilweise Code vom Fensterbeispielscript genommen.
zu 1) Das wird beim Heizungsscript nämlich gar nicht genommen, dort triggert das Gewerk bei "ne", das könnte er auch machen.
zu 2) Das wird im Heizungsscript auch übergangen, indem einmal beim Start die Funktion aufgerufen wird.

Meine Vermutung:
Bei ihm stimmt irgendwas nicht mit den Daten (Raumnamen,etc.) oder so.
Anders kann ich mir den gleichen Fehler in allen 3 Scripts nicht erklären.

Gruß

Antworten

Zurück zu „CCU.IO“