NEWS
[Javascript] Adapter-Instanzen überwachen
-
Vielen Dank für euer Feedback @frana120500 und @ciddi89 !
@ciddi89
Danke für den Logauszug, Problem also bei den Instanzen "admin.0" und "mqtt.0" bezüglich String statt Boolean.
mqtt habe ich derzeit nicht im Einsatz, aber den admin zwangsläufigLeider kann ich den Fehler bei admin.0 und allen anderen Instanzen nicht reproduzieren.
Für sämtliche Instanzen bekomme ich mit einem log(), eine Zeile vor dem setState(), auf Prüfung der Variable immer ein Boolean, hier als Auszug für admin.0:16:28:03.008 warn javascript.0 (1047) script.js.System.Adapter-Instance-Watcher: [admin.0] Type=[boolean], Value stringified=[true]
Könntest du mir bitte einen Gefallen tun und Zeile 396, also
setState(this.path + '.info.connected_with_device_service', {val:this.connected_with_device_service, ack:true});
löschen und ersetzen mit:
///// - TEST 1 - 15.07.2022 - https://forum.iobroker.net/post/827939 if (typeof this.connected_with_device_service !== 'boolean') { log(`[${this.id}] connected_with_device_service type error, boolean expected – Type=[${typeof this.connected_with_device_service}], Value stringified=[${JSON.stringify(this.connected_with_device_service)}]`, 'warn'); } else { setState(this.path + '.info.connected_with_device_service', {val:this.connected_with_device_service, ack:true}); } /////////////////////////////////////////////////////////////////
Welche Log-Ausgabe bekommst du da? Da sollte jetzt für "admin.0" und "mqtt.0" jeweils eine warn-Logzeile kommen mit Datentyp und Wert.
Welche JavaScript-Adapter-Version setzt du denn ein? Ich aktuell 5.8.10, und bis vor kurzem 5.8.3 / 5.8.5.
Danke!
-
@acgua ja bei allen anderen Instanzen ist es auch der Typ Boolean. Komischerweise hier aber nicht, dort steht auch ein String drin. Javascript Adapter Version ist die 5.7.0. Sollte also die stable sein. Hier die Ausgabe vom Log aus deinem Test:
-
@frana120500 said in [Javascript] Adapter-Instanzen überwachen:
Dann baue ich mir mal meine Telegram Benachrichtigung zusammen (mit Blockly) für den Fall, dass eine Instanz ausgfällt.
Sag gerne Bescheid, falls du noch zusätzliche Datenpunkte brauchst.
Ich überlege mir da auch noch was sinnvolles.
Gibt ja Adapter, die mal für paar Minuten keine Verbindung mit einem Service haben, aber da möchte man dann nicht ständig Telegram-Messages bekommen.
Außerdem wäre wohl eine Historie sinnvoll, um nachzuvollziehen, wann und wie lange pro Tag eine Instanz nicht "functioning" war. -
@ciddi89
Danke. Ich wollte auf JS-Adapter 5.7.0 downgraden zum testen, aber bekomme diverse npm errors und klappt nicht... Ich bin immer im Latest unterwegs, mit derzeit Node.js v16.15.1, NPM: 8.11.0, JS-Controller 4.0.23Seltsam jedenfalls, aber das könnte auch ein Bug der 5.7.0 sein, der in nachfolgenden Versionen behoben ist.
Die String-Ausgaben sind jedenfalls interessant, weil diese eigentlich nur boolean sein können:
Der Wert wird abgefragt von z.B.admin.0.info.connection
, über
Undadmin.0.info.connection
ist boolean.
Muss mir mal was überlegen. Eigentlich nur eine Kleinigkeit, aber nervt jetzt grad
-
@acgua Historie wäre geil, dann könnte man eventuelle Fehlerquellen zeitlich eingrenzen
-
@frana120500
cool, dachte ich mir auch, dann baue ich das noch ein.Welche JS-Adapter-Version setzt du denn ein? Bekommst du evtl. auch Warnungen wie
You are assigning a string to the state (...) which expects a boolean.
im Log? -
@acgua ja deswegen hat es mich gewundert und darum habe ich den Fehler hier rein gestellt. Für mich persönlich nicht schlimm, wie gesagt hab die zwei Datenpunkte auf String umgeändert. Aber ich weiß wie es ist das so eine Kleinigkeit einen stören kann und man wissen will wieso weshalb warum. Wenn ich später mal Zeit habe schaue ich mir das Skript auch mal in Ruhe an, vielleicht finde ich auch selbst heraus woher es kommen könnte.
-
@acgua Hi, ich nutze den Script Adapter in Version 5.8.10... also die letzte Beta
Ich bekomme aufgrund des Sonoff und des MQTT Adapters die folgenden Fehlermeldungen:
You are assigning a string to the state "0_userdata.0.System.Adapter-Instanzen.sonoff_0.info.connected_with_device_service" which expects a boolean. Please fix your code to use a boolean or change the state type to string. This warning might become an error in future versions.
You are assigning a string to the state "0_userdata.0.System.Adapter-Instanzen.mqtt_0.info.connected_with_device_service" which expects a boolean. Please fix your code to use a boolean or change the state type to string. This warning might become an error in future versions.
-
@frana120500
Danke. Auch noch mal an @ciddi89 für deine Rückinfo.Dann muss ich mir das die Tage mal näher ansehen, gerade weil es auch im Latest (5.8.10) vorkommt, das ist sehr wichtig zu wissen.
Ich habe nur beschränkt Zeit, daher brauche ich ggf. ein paar Tage, also bitte nicht wundern, aber ich kümmere mich darum.
Ist nur eine Kleinigkeit und eher ein "Schönheitsfehler", weil sonst ja alles läuft, aber nervt mich und werde ich lösen, also die Ursache. -
@acgua hehe ja gerne doch. Mach dir kein Stress, wie du schon sagst: es ist nur ein Schönheitsfehler. Und ich kenne das nur zu gut mit der Zeit. Das Problem habe ich und viele andere auch hier. Falls ich vorher schon was finde, gebe ich dir natürlich Bescheid.
-
@ciddi89 und @frana120500
Ich habe nun Version 0.0.2 veröffentlicht, Änderung:- Acgua – Workaround aufgrund Issue #1 eingebaut. In manchen ioBroker-Umgebungen scheint die Abfrage von
admin.0.info.connection
(sowie bisher identifizierte Adapter mqtt und sonoff) kein Boolean zurückzugeben, sondern ein String wie etwa[2]admin, javascript
. Ich kann es nicht reproduzieren aber habe ein Workaround eingebaut. Bei Ausgabe eines Strings (Länge > 1) wird angenommen, dass eine Verbindung besteht.
Hier übrigens die Änderungen im Script:
https://github.com/Acgua/ioBroker-Script-Adapter-Instances-Watcher/commit/08b171e5a93995eab65d9400bc049cc25760e382Link zum Projekt: https://github.com/Acgua/ioBroker-Script-Adapter-Instances-Watcher
- Acgua – Workaround aufgrund Issue #1 eingebaut. In manchen ioBroker-Umgebungen scheint die Abfrage von
-
@acgua danke, hab die neue Version gleich ausprobiert. Vielen dank für die Arbeit. Das log sieht nun so aus:
-
Hi, ich wollte das Script einmal ausprobieren und habe das npm Modul cron-parser aktiviert.
Dann das Log kontrolliert. Folgende Meldungen:2022-07-19 14:18:39.627 error WARN deprecated coffee-script@1.12.7: CoffeeScript on NPM has moved to "coffeescript" (no hyphen) javascript.0 2022-07-19 14:18:39.626 error npm javascript.0 2022-07-19 14:18:39.599 error WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142 javascript.0 2022-07-19 14:18:39.598 error npm javascript.0 2022-07-19 14:18:39.577 error WARN deprecated uuid@3.4.0: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. javascript.0 2022-07-19 14:18:39.576 error npm javascript.0 2022-07-19 14:18:39.538 error WARN deprecated node-inspect@2.0.0: This module is part of Node.js core and does not need to be installed separately. It is now unmaintained. javascript.0 2022-07-19 14:18:39.537 error npm javascript.0 2022-07-19 14:18:39.480 error WARN deprecated har-validator@5.1.5: this library is no longer supported javascript.0 2022-07-19 14:18:39.479 error npm javascript.0 2022-07-19 14:18:37.412 error WARN config production Use `--omit=dev` instead. javascript.0 2022-07-19 14:18:37.411 error npm
Ist das so richtig?
-
ich habe auch mal die 0.0.2 ausprobiert und erhalten folgende warnings im log:
javascript.0 2022-07-19 14:59:32.583 warn script.js.Sonstiges.Adapter_Instanzen_überwachen: sonoff.0.info.connection returns String "Erzeugungszähler,Waschmaschine,Bürolampe,Gosund SP112,Gosund-Heizstab,3dDrucker,FritzBox_Steckdose,Staubsauger,Gosund-USV,Stehlampe,Gosund-Treppe-ESP32,Kinderzimmerlampe,GrosseGarage,Bewässerung,TasmoShelly-BJ", but boolean expected. We assume connection is true and continue. javascript.0 2022-07-19 14:59:32.582 warn script.js.Sonstiges.Adapter_Instanzen_überwachen: mqtt.0.info.connection returns String "evcc-2142291184", but boolean expected. We assume connection is true and continue.
-
@acgua sagte in [Javascript] Adapter-Instanzen überwachen:
In manchen ioBroker-Umgebungen scheint die Abfrage von
admin.0.info.connection
(sowie bisher identifizierte Adapter mqtt und sonoff) kein Boolean zurückzugeben, sondern ein String wie etwa[2]admin, javascript
. Ich kann es nichtnur FYI - der sonoff-Adapter z.B. enthält per Definition im besagten DP "Liste der verbundenen Geräte" - dürfte also nie "boolean" liefern...
-
@david83 sagte in [Javascript] Adapter-Instanzen überwachen:
Hi, ich wollte das Script einmal ausprobieren und habe das npm Modul cron-parser aktiviert.
Dann das Log kontrolliert. Folgende Meldungen:2022-07-19 14:18:39.627 error WARN deprecated coffee-script@1.12.7: CoffeeScript on NPM has moved to "coffeescript" (no hyphen) javascript.0 2022-07-19 14:18:39.626 error npm javascript.0 2022-07-19 14:18:39.599 error WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142 javascript.0 2022-07-19 14:18:39.598 error npm javascript.0 2022-07-19 14:18:39.577 error WARN deprecated uuid@3.4.0: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. javascript.0 2022-07-19 14:18:39.576 error npm javascript.0 2022-07-19 14:18:39.538 error WARN deprecated node-inspect@2.0.0: This module is part of Node.js core and does not need to be installed separately. It is now unmaintained. javascript.0 2022-07-19 14:18:39.537 error npm javascript.0 2022-07-19 14:18:39.480 error WARN deprecated har-validator@5.1.5: this library is no longer supported javascript.0 2022-07-19 14:18:39.479 error npm javascript.0 2022-07-19 14:18:37.412 error WARN config production Use `--omit=dev` instead. javascript.0 2022-07-19 14:18:37.411 error npm
Ist das so richtig?
Kann zu den Ausgaben im Log jemand mit etwas mehr Hintergrundwissen was sagen?
-
@david83 sagte in [Javascript] Adapter-Instanzen überwachen:
@david83 sagte in [Javascript] Adapter-Instanzen überwachen:
Hi, ich wollte das Script einmal ausprobieren und habe das npm Modul cron-parser aktiviert.
Dann das Log kontrolliert. Folgende Meldungen:2022-07-19 14:18:39.627 error WARN deprecated coffee-script@1.12.7: CoffeeScript on NPM has moved to "coffeescript" (no hyphen) javascript.0 2022-07-19 14:18:39.626 error npm javascript.0 2022-07-19 14:18:39.599 error WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142 javascript.0 2022-07-19 14:18:39.598 error npm javascript.0 2022-07-19 14:18:39.577 error WARN deprecated uuid@3.4.0: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. javascript.0 2022-07-19 14:18:39.576 error npm javascript.0 2022-07-19 14:18:39.538 error WARN deprecated node-inspect@2.0.0: This module is part of Node.js core and does not need to be installed separately. It is now unmaintained. javascript.0 2022-07-19 14:18:39.537 error npm javascript.0 2022-07-19 14:18:39.480 error WARN deprecated har-validator@5.1.5: this library is no longer supported javascript.0 2022-07-19 14:18:39.479 error npm javascript.0 2022-07-19 14:18:37.412 error WARN config production Use `--omit=dev` instead. javascript.0 2022-07-19 14:18:37.411 error npm
Ist das so richtig?
Kann zu den Ausgaben im Log jemand mit etwas mehr Hintergrundwissen was sagen?
Würde mich auch interessieren.
-
Alles harmlose Hinweise auf Änderungen. Die meisten werden sich mit künftigen Updates erledigen.
-
@wilbur said in [Javascript] Adapter-Instanzen überwachen:
Ich hab dafür ein kleines Blockly nach diesem Muster: machs-smart.de
Und das funktioniert bisher sehr zuverlässig.
Das meldet, wenn eine Instanz nicht mehr läuft.Danke für die Inspirationen hier im Beitrag.
Ich habs auch mit der machs-smart Methode durch Blockly gelöst.Bin zwar Senior Developer (allerdings nicht für JS haha), daher ist dieses grafische Programmieren mal ganz erfrischend
Ich nutze es für die Überwachung des ZigBee Adapters, da ich eine Art Bewegungsmelder realisiert habe und mitbekommen muss, wenn die Geräte selbst durch ausgefallenen Adapter nicht erreichbar sind.
-
@ciddi89 said in [Javascript] Adapter-Instanzen überwachen:
@acgua danke, hab die neue Version gleich ausprobiert. Vielen dank für die Arbeit. Das log sieht nun so aus:
@frana120500 said in [Javascript] Adapter-Instanzen überwachen:
ich habe auch mal die 0.0.2 ausprobiert und erhalten folgende warnings im log:
@jleg said in [Javascript] Adapter-Instanzen überwachen:
nur FYI - der sonoff-Adapter z.B. enthält per Definition im besagten DP "Liste der verbundenen Geräte" - dürfte also nie "boolean" liefern...
Vielen Dank für eure Rückmeldungen.
Ich werde das Script in einen eigenen Adapter umwandeln, da kann ich einfach vieles besser handhaben im Code als über ein Script im JS-Adapter.
Wird aber noch etwas dauern.