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
wird aber als installiert angezeigt.Folgende Installation:
IoBroker auf Windows 7 in einer VM
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();
-
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
-
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 nachlog(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.
-
-
@paul53 kannte ich so auch noch nicht, das Script startet und aufgrund der Fehler im Script kommt ein gelbes Pause Zeichen.
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?
-
@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.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.