NEWS

IoBroker - Neustart, Javascript keine Funktion



  • Hallo,

    seit etwa 1 Woche habe ich ständig Fehlfunktionen, meine Blockly Scripte werden nicht mehr ausgeführt, z.B. Fingerprint -> gibt gerade rote Karte, diverse andere Blockly Funktionen.
    Meines Wissens habe ich in letzter Zeit nur den iQontrol installiert, denke nicht das es damit zusammenhngt.
    Man sieht zwischendurch ständig die Sanduhr in der Admin Oberfläche, sowie in VIS, kommt alles nach einer Zeit zurück, im SQL Adapter sehe Aufzeichnungen wie Temperatur usw. gut aus, also können die Ausfälle nicht sehr lang sein.

    Ich habe einige Fehlermeldungen in IObroker, und im Javascript 1, die Funktionen liegen aber alle in Adapter 0, Unwichtige Dinge habe ich im Adapter 1.
    Die Fehlermeldungen selbst kann ich nicht deuten, hier ein kleiner Auszug, das wiederholt sich dann, kann jemand mir einen Tipp geben wo das Problem liegt?

    Weitere Meldungen:

    Weiter wollte ich meine Installation mal ein wenig aufräumen, z.B. Adapter deinstallieren.

    dann kommen Meldungen das es nicht installiert ist:

    iobroker 2019-05-23 19:09:46.143 info npm uninstall iobroker.samsung --silent --save --prefix "C:/iobroker" (System call)
    iobroker 2019-05-23 19:09:40.668 info host.Home-ioBroker no instances of adapter samsung found
    iobroker 2019-05-23 19:09:40.574 info Delete adapter "samsung"
    iobroker 2019-05-23 19:09:38.421 info del samsung

    5571e877-09b2-4578-9211-a5462bf6abe2-image.png
    wird aber als installiert angezeigt.

    Folgende Installation:
    IoBroker auf Windows 7 in einer VM

    6acc2ea4-c4b0-4ee1-993e-0e88e75d9a94-image.png
    f87d199c-46cb-4162-9a9c-556e3b6d9e96-image.png

    Die Anzahl der Adapter kann aber nicht stimmen. Ich hoffe jemand hat einen Tipp für mich.



  • @mike2712 sagte:

    javascript.1 2019-05-23 19:00:00.004 error at script.js.Allgemein.Servicemeldungen:52:9
    javascript.1 2019-05-23 19:00:00.004 error at count (script.js.Allgemein.Servicemeldungen:45:31)
    javascript.1 2019-05-23 19:00:00.004 error Error in callback: TypeError: Cannot read property 'split' of undefined
    

    Wie sieht das Skript Allgemein.Servicemeldungen aus ?



  • @paul53
    das hat ein gelbes Pause Zeichen ?
    Inhalt ist so wie aus dem Forum:

    /*  System Homematic Servicemeldungen
    Skript erstellt Variablen Service.Homematic.*
    http://forum.iobroker.org/viewtopic.php?f=21&t=914#p9153
    
    erstellt: 04.08.2015 von paul53
    angepasst von pix
    05.10.2015 STICKY UNREACH wird jetzt auf true gesetzt und damit gelöscht http://forum.iobroker.org/viewtopic.php?f=21&t=914&p=9200&hilit=sticky#p9173
    04.02.2016 Instanz Variable
    */
    
    instanz = 'javascript.1.';
    
    // Service Meldungen
    
    createState('Servicemeldungen.Homematic.Anzahl', 0, {
        name: 'Homematic Servicemeldungen Anzahl',
        desc: 'Zahl der Homematic Servicemeldungen',
        type: 'number'
    });
    createState('Servicemeldungen.Homematic.Text', "", {
        name: 'Homematic Servicemeldungen Text',
        desc: 'Liste der Geräte, die Servicemeldungen produzieren',
        type: 'string'
    });
    
    var idAnzahl = instanz + 'Servicemeldungen.Homematic.Anzahl',
        idText =   instanz + 'Servicemeldungen.Homematic.Text';
    
    var SelectorUNREACH = $('channel[state.id=*.UNREACH]');
    var SelectorSTICKY_UNREACH = $('channel[state.id=*.STICKY_UNREACH]');
    var SelectorLOWBAT = $('channel[state.id=*.LOWBAT]');
    var SelectorCONFIG_PENDING = $('channel[state.id=*.CONFIG_PENDING]');
    
    function countService(obj) {
        var anzahl    = 0;
        var text      = "";
    
       function count(id) {
            var status = getState(id).val;                // Zustand abfragen (jedes Element)
            if (status) {                        // wenn Zustand = true, dann wird die Anzahl der Geräte hochgezählt
                var temptext = getObject(id).common.name;
                var Geraet = temptext.split(':');
                text = text + Geraet[0] + " ==> ";
                temptext = Geraet[1];
                Geraet = temptext.split('.');
                text = text + Geraet[1] + "<br>";
                ++anzahl;                                  // Zählt die Anzahl der Service-Alarme
            }
        }
     
        SelectorUNREACH.each(function (id, i) {
            count(id);
         });
          
        SelectorSTICKY_UNREACH.each(function (id, i) {
            var status = getState(id).val;                // Zustand abfragen (jedes Element)
            if (status) {                        // wenn Zustand = true, dann wird die Anzahl der Geräte hochgezählt
                log('STICKY_UNREACH Meldung: ' + id + ' wurde auf <true> gesetzt. Das Homematic Gerät ist wieder uneingeschränkt erreichbar.');
                setState(id, false); // STICKY_UNREACH werden gelöscht
            }
        });
          
        SelectorLOWBAT.each(function (id, i) {
            count(id);
        });
          
        SelectorCONFIG_PENDING.each(function (id, i) {
            count(id);
        });
          
    
        // Schleife ist durchlaufen. Im Log wird der aktuelle Status (Anzahl, davon Service zutreffend) ausgegeben
        log("Homematic-Servicemeldungen: " + text);
        log("Anzahl Homematic-Servicemeldungen: " + anzahl);
    
        // die ermittelten Werte werden als javascript.0. Variable in ioBroker gespeichert 
        if (!anzahl) { 
            text = "keine Servicemeldungen";
        }
        setState(idText, text);          // Schreibt die IDs der Datenpunkte mit Service Meldung
        setState(idAnzahl, anzahl);      // Schreibt die aktuelle Anzahl der Service Meldungen
    }   
    
    SelectorUNREACH.on(function(obj) {          // bei Zustandänderung *.UNREACH in allen Gewerken
        countService(obj);
    });
    
    SelectorSTICKY_UNREACH.on(function(obj) {   // bei Zustandänderung *.STICKY_UNREACH in allen Gewerken
        countService(obj);
    });
    
    SelectorLOWBAT.on(function(obj) {          // bei Zustandänderung *.LOWBAT in allen Gewerken
        countService(obj);
    });
    
    SelectorCONFIG_PENDING.on(function(obj) {   // bei Zustandänderung *.CONFIG_PENDING in allen Gewerken
        countService(obj);
    });
    
    // alternative Abfrage jede Minute
    schedule("*/15 * * * *", function () {
        countService();
    });
    
    // Ausführung bei Scriptstart
    countService();
    


  • @mike2712

                var Geraet = temptext.split(':');
    

    Das Skript erwartet, dass der Datenpunkt-Name einen Doppelpunkt enthält.
    Bau mal nach Zeile 41 ein Log ein, um die Namen zu sehen.

    log(temptext);
    


  • @paul53 sagte in IoBroker - Neustart, Javascript keine Funktion:

    log(temptext);
    Danach kommt folgender LOG, das Script wird angehalten und steht auf Pause, das kann doch dann meine eigentlichen Probleme gar nicht verursachen, oder, wenn das Script angehalten ist?

    19:59:06.306	info	javascript.1 Stop script script.js.Allgemein.Servicemeldungen
    19:59:08.911	info	javascript.1 Start javascript script.js.Allgemein.Servicemeldungen
    19:59:08.911	info	javascript.1 script.js.Allgemein.Servicemeldungen: Badezimmer Fenster:0.UNREACH
    19:59:08.911	info	javascript.1 script.js.Allgemein.Servicemeldungen: UNREACH
    19:59:08.911	error	javascript.1 script.js.Allgemein.Servicemeldungen: script.js.Allgemein.Servicemeldungen:46
    19:59:08.911	error	javascript.1 at count (script.js.Allgemein.Servicemeldungen:46:31)
    19:59:08.911	error	javascript.1 at script.js.Allgemein.Servicemeldungen:53:9
    19:59:08.911	error	javascript.1 at countService (script.js.Allgemein.Servicemeldungen:52:21)
    19:59:08.911	error	javascript.1 at script.js.Allgemein.Servicemeldungen:107:1
    


  • @mike2712

    19:59:08.911	info	javascript.1 script.js.Allgemein.Servicemeldungen: UNREACH
    

    Es scheint einen Datenpunkt mit Zustand UNREACH = true zu geben, der nur den Namen UNREACH hat.
    Ändere mal das Log in Zeile 42 nach

    log(id + ': ' + temptext);
    

    um zu sehen, welcher Datenpunkt es ist.



  • @paul53 kann es sein das dieses mit den Homematic Fenterdrehgriff Kontakten zusammenhängt?
    Da musste ich vor kurzen einen ablernen und neu anlernen, ich vermute das es dann vielleicht in iobroker noch drin steckt? Wenn ich etwas in der CCU ändere, werden ja nur zusätzliche Sachen automatisch zugefügt, aber keine Datenpunkte gelöscht, oder?

    Kann den das mein allgemeines Problem sein, was passiert den da, das Script wird doch automatisch pausiert, aber die Probleme sind weiterhin da.



  • @mike2712 sagte:

    das Script wird doch automatisch pausiert

    Wieso wird es automatisch pausiert ?



  • @paul53 kannte ich so auch noch nicht, das Script startet und aufgrund der Fehler im Script kommt ein gelbes Pause Zeichen.
    2ad37853-c7c9-4dc8-bcec-1d960059f028-image.png
    Hier der neue LOG:

    20:29:39.540	info	javascript.1 Stop script script.js.Allgemein.Servicemeldungen
    20:29:43.034	info	javascript.1 Start javascript script.js.Allgemein.Servicemeldungen
    20:29:43.034	info	javascript.1 script.js.Allgemein.Servicemeldungen: hm-rpc.0.MEQ0214836.0.UNREACH: Badezimmer Fenster:0.UNREACH
    20:29:43.034	info	javascript.1 script.js.Allgemein.Servicemeldungen: iqontrol.0.Views.Tanel.0000__Tanel Licht.UNREACH: UNREACH
    20:29:43.034	error	javascript.1 script.js.Allgemein.Servicemeldungen: script.js.Allgemein.Servicemeldungen:50
    20:29:43.034	error	javascript.1 at count (script.js.Allgemein.Servicemeldungen:50:31)
    20:29:43.034	error	javascript.1 at script.js.Allgemein.Servicemeldungen:57:9
    20:29:43.034	error	javascript.1 at countService (script.js.Allgemein.Servicemeldungen:56:21)
    20:29:43.034	error	javascript.1 at script.js.Allgemein.Servicemeldungen:111:1
    


  • @mike2712: Dieser Datenpunkt erzeugt den Fehler:

    iqontrol.0.Views.Tanel.0000__Tanel Licht.UNREACH

    Ändere den UNREACH-Selektor (s.u.).



  • @paul53 Das sind die Datenpunkte aus Qontrol, richtig ?

    die sind aber an jedem Qontrol so angebunden, warum macht nur der eine Fehler, wo kann ich den ändern?

    86ed0cca-4a6c-4d22-bcc5-8eb64df0b4ea-image.png



  • @mike2712 Was ist Qontrol ?



  • @mike2712 sagte:

    wo kann ich den ändern?

    Du solltest die Selektoren ändern:

    var SelectorUNREACH = $('channel[state.id=hm-rpc.*.UNREACH]');
    


  • @paul53 Jetzt habe ich den rausgelöscht, wie vermutet kommt jetzt der nächste, nicht Licht, sondern Jalousie.

    20:42:07.108	info	javascript.1 Stop script script.js.Allgemein.Servicemeldungen
    20:42:11.398	info	javascript.1 Start javascript script.js.Allgemein.Servicemeldungen
    20:42:11.398	info	javascript.1 script.js.Allgemein.Servicemeldungen: hm-rpc.0.MEQ0214836.0.UNREACH: Badezimmer Fenster:0.UNREACH
    20:42:11.398	info	javascript.1 script.js.Allgemein.Servicemeldungen: iqontrol.0.Views.Tanel.0001__Tanel Jalousie.UNREACH: UNREACH
    20:42:11.413	error	javascript.1 script.js.Allgemein.Servicemeldungen: script.js.Allgemein.Servicemeldungen:50
    20:42:11.413	error	javascript.1 at count (script.js.Allgemein.Servicemeldungen:50:31)
    20:42:11.413	error	javascript.1 at script.js.Allgemein.Servicemeldungen:57:9
    20:42:11.413	error	javascript.1 at countService (script.js.Allgemein.Servicemeldungen:56:21)
    20:42:11.413	error	javascript.1 at script.js.Allgemein.Servicemeldungen:111:1
    

    Sorry iQontrol
    https://forum.iobroker.net/topic/22039/neuer-adapter-visualisierung-iqontrol



  • @paul53
    Da habe ich was falsch verstanden? Habe den hier bei unreach den Wert rausgenommen.

    b024cc2e-cc7d-45c2-90cc-3954f6a36249-image.png

    Das Script kommt doch sogar von Dir, ist mein Script noch aktuell, ich kann leider nichts anderes finden.



  • @mike2712 sagte:

    Das Script kommt doch sogar von Dir

    Das ist eines meiner ersten Skripte gewesen. Damals gab es noch kein iQontrol. Nur HomeMatic hatte Datenpunkte mit UNREACH am Ende. Deshalb erweitere den Selektor um hm-rpc. vor dem Sternchen:

    var SelectorUNREACH = $('channel[state.id=hm-rpc.*.UNREACH]');
    


  • @paul53 ok, ist das weiter entwickelt worden, scheinbar nicht, schade finde das sehr gut und nützlich.

    Was genau muss ich den in dieser Zeile ändern ?

    var SelectorUNREACH = $('channel[state.id=hm-rpc.*.UNREACH]');

    Ich kann leider kein Java, dann würden die Homematic Unreach auch nicht mehr funktionieren? Das wäre auch blöd.



  • @mike2712 sagte:

    dann würden die Homematic Unreach auch nicht mehr funktionieren?

    Der Zusatz hm-rpc. begrenzt die Gültigkeit auf HomeMatic.



  • @paul53 super, vielen Dank, das läuft jetzt ohne Probleme durch.

    Aber nochmal, kann das meine Probleme verursacht haben da dieses Script ja auf Pause stand?
    Obwohl was dafür spricht, ist ja das ich das Gefühl hatte das es mit testen von iQontrol zusammenhängt. Aber verstehe es nicht, da das Script ja pausiert. Was passiert den durch diesen Fehler, die wichtigen Funktionen waren ja eigentlich im Javascript 0.



  • @mike2712 sagte:

    kann das meine Probleme verursacht haben da dieses Script ja auf Pause stand?

    Wirklich ? Wenn das Skript nicht aktiviert ist, kann es auch keine Logeinträge erzeugen.



Suggested Topics

1.9k
Online

32.0k
Users

38.7k
Topics

524.9k
Posts