NEWS
Warnung unterdrücken
-
Hallo zusammen,
ich bin gerade dabei ein Skript zu scrheiben, dass meine Instanzen überwacht.
Es kann ja immer mal sein, dass eine Instanz komplett deaktiviert ist.
Auch damit soll das Skript umgehen können.
Leider bekomme ich in dem Fall immer eine Warnung.
Ich suche mir alle Adapter über
$('[id=system.adapter.*.alive]');
Danach filtere ich noch VIS.0 heraus, da VIS.0 bei mir keinen DP alive hat.
Der Fehler sieht so aus
Um die Warnung zu unterdrücken habe ich es bereits mit
if(getState("system.adapter." + instanz_name + ".alive").val) {...
versucht. Leider kommt die Warnung danach weiterhin.
Ansonsten läuft das Skript danach aber korrekt weiter und setzte den Status der Instanz auf 0 -> 0 = deaktiviert
-
@kuddel sagte in Warnung unterdrücken:
Leider bekomme ich in dem Fall immer eine Warnung.
laut deinem Log :
getState "system.adapter.logparser.0.alive" not found
hast du den überprüft , gibt es den !?
-
-
@kuddel sagte in Warnung unterdrücken:
Die Instanz ist aktuell aus und der DP sieht dann so aus
der ist aber nicht beschrieben ... hat den Wert (null)
false oder true sollte seine , deshalb hast du auch die Fehlermeldung !
-
@glasfaser zum testen bin ich in meiner Testumgebung unterwegs, wo die meisten Instanzen deaktiviert sind.
Diesen Fehler mit "null" haben komischerweise nicht alle Instanzen:
EDIT:
Ich habe alle fehlerhaften Instanzen kurz gestartet und wieder gestoppt.
Jetzt steht der DP auf false.
-
@kuddel existsState(Datenpunkt) ? getState(id_Rollo).val : "tja weiß nicht was dort hinsoll z. B." false?
-
@kuddel sagte in Warnung unterdrücken:
EDIT:
Ich habe alle fehlerhaften Instanzen kurz gestartet und wieder gestoppt.
Jetzt steht der DP auf false.Ich war auch gerade am suchen was sein kann ,, hat mich sehr gewundert bei dir .
Dann müßte es doch jetzt gehen
-
@glasfaser jap, jetzt läuft das Skript fehlerfrei.
Eine frage habe ich noch.
Ich habe das Skript in einer Funktion laufen um mehrere Trigger verwenden zu können.
function abfrage(obj) {...
Leider startet das Skript nicht beim Speichern.
//Trigger definieren schedule("* * * * *", abfrage); on({ id: "0_userdata.0.instanz-infos.Sortierung" }, abfrage); $('system.adapter.*.alive').on(abfrage); $('system.adapter.*.connected').on(abfrage); abfrage
-
@kuddel sagte in Warnung unterdrücken:
Leider startet das Skript nicht beim Speichern.
Meinst du einmalig beim JS Start die Function starten ,
abfrage();
-
@kuddel
Und wenn du deinen IoBroker rebootest wird da vermutlich wieder "null" stehen, oder?
Kannst du noch nachvollziehen welche Probleme gemacht haben? Ggf. sollte ein "def": false im Datenpunkt das dauerhaft lösen. -
@glasfaser sagte in Warnung unterdrücken:
@kuddel sagte in Warnung unterdrücken:
Leider startet das Skript nicht beim Speichern.
Meinst du einmalig beim JS Start die Function starten ,
abfrage();
Ja genau. Das wars.
Super, danke dir
-
@bommel_030 das kann man elegant umgehen wenn man mit "existsState(Datenpunkt) ?" abfragt. Ich würde auch abraten in den Definitionen von Adaptern etwas zu ändern...
-
@cash
Sorry, das war etwas unrein geschrieben. War nicht als Aufforderung gedacht etwas zu ändern, eher als Frage.
Ich meine es macht grundsätzlich Sinn einen Datenpunkt der "alive" heißt mit der Definition false zu belegen um nach einem Reboot kein "null" zu haben. Ich sehe zumindest keinen Vorteil ein "null" zuhaben. -
@bommel_030 sagte in Warnung unterdrücken:
Ich sehe zumindest keinen Vorteil ein "null" zuhaben
Der Entwickler möglicherweise schon. Er hat dadurch einen "Tripple-State": Null, False und True. Er könnte z.B. mit dem "Null" feststellen, ob sein Adapter schon einmal gestartet wurde ... falls er das für irgendwas braucht.