NEWS
JavaScript 8.3.0 - Log-Trigger, File-Events und Warnungen
-
@mcm1957 sagte in JavaScript 8.3.0 - Log-Trigger, File-Events und Warnungen:
Ich w
ü
rde aber sagen die Kombi aus Installationen und Nicht-Issues sagt auch aus dass du gute Arbeit geleistest hast.Bei anderen Adaptern gehe ich da ja mit. Aber der JavaScript-Adapter kann in so vielen Auspr
ä
gungen genutzt werden, dass es extrem schwierig ist das bei neuen Features danach zu bewerten. Ich versuche zwar zu allem auch Tests zu programmieren um das direkt abzufangen - aber die Abdeckung ist ja l
ä
ngst nicht bei 100%. Und Blockly wird da gar nicht getestet - nur reines JavaScript.Wenn es im statistics-Report einen Indikator daf
ü
r g
ä
be, welche Bl
ö
cke von welchem Typ wie oft genutzt werden, ...@haus-automatisierung said in [JavaScript 8.3.0 - Log-Trigger, File-Events und
Wenn es im statistics-Report einen Indikator daf
ü
r g
ä
be, welche Bl
ö
cke von welchem Typ wie oft genutzt werden, ...Ev. k
ö
nnte man das via sentry implementieren. Wei
ß
nur nicht ob es schon mal m
ö
glich w
ä
re benutzte Bl
ö
cke nur einmal je Adapetrstart zu senden. Weil sonst geht Ingos sentry Server sicher in die Knie und sentry.io wird mit Limits um sich werfen ... -
@haus-automatisierung said in [JavaScript 8.3.0 - Log-Trigger, File-Events und
Wenn es im statistics-Report einen Indikator daf
ü
r g
ä
be, welche Bl
ö
cke von welchem Typ wie oft genutzt werden, ...Ev. k
ö
nnte man das via sentry implementieren. Wei
ß
nur nicht ob es schon mal m
ö
glich w
ä
re benutzte Bl
ö
cke nur einmal je Adapetrstart zu senden. Weil sonst geht Ingos sentry Server sicher in die Knie und sentry.io wird mit Limits um sich werfen ...@mcm1957 sagte in JavaScript 8.3.0 - Log-Trigger, File-Events und Warnungen:
Ev. k
ö
nnte man das via sentry implementieren.Habe gerade schon
ü
berlegt, ob man ein weiteres Statistics-Plugin entwickeln k
ö
nnte. Beim Shelly-Adapter w
ü
rde es mich ja auch interessieren, welche Ger
ä
te mit welchen Versionen so im Einsatz sind. Ich
ü
berlege mir mal ein Konzept. -
@homoran sagte: Testsystem, welches ich im Moment nicht besitze.
Weshalb eigentlich nicht? Bei mir l
ä
uft das Testsystem auf einem PC in einer VM (VirtualBox).@paul53 sagte in JavaScript 8.3.0 - Log-Trigger, File-Events und Warnungen:
Weshalb eigentlich nicht?
ich habe vor einiger Zeit (fast) alles zur
ü
ckgefahren. -
@mcm1957 sagte in JavaScript 8.3.0 - Log-Trigger, File-Events und Warnungen:
Ev. k
ö
nnte man das via sentry implementieren.Habe gerade schon
ü
berlegt, ob man ein weiteres Statistics-Plugin entwickeln k
ö
nnte. Beim Shelly-Adapter w
ü
rde es mich ja auch interessieren, welche Ger
ä
te mit welchen Versionen so im Einsatz sind. Ich
ü
berlege mir mal ein Konzept.@haus-automatisierung
Red dich auch mit Foxriver zusammen. Drr js-controller 6 logged nun auch ob ein adapter vom repo od GH installiert wurde. Wenn das die Auswerteseiten mal lerben verschwinden dann Geisterreleasrs weil irgendwer nen Fork verteilt der nie in npm u repo gekommen ist.Ev machts sinn da eine Art Adapterpayload zu definieren. M
ü
sste man dann nur schaun wie man diee auswerten kann.Aber ev ist sa sentry eh flexibel genug. @apollon77 weisst di da was dazu?
-
Aktuelle Test Version 8.3.0 Ver
ö
ffentlichungsdatum09.05.2024 Github Link https://github.com/ioBroker/ioBroker.javascript/releases/tag/v8.3.0 Auch in dieser Version gibt es wieder viele neue Bl
ö
cke, Bugfixes und Features. Das wichtigste zuerst:Besten Dank an alle Teilnehmer des ioBroker-Master-Kurses. Ihr habt die vielen Stunden Entwicklung und Support (wie immer) finanziert. Nat
ü
rlich werden die neuen Bausteine und Feature auch im Kurs ausf
ü
hrlich gezeigt und erkl
ä
rt.Blockly-Trigger f
ü
r LogsDas Thema ist in JavaScript nicht neu. Es gab nur keine Blockly-Bausteine daf
ü
r. Also habe ich diese nun nachgereicht.Damit kann man einen Trigger auf Log-Meldungen registrieren und ein Log-Level vorgeben. Das hei
ß
t, dass man z.B. alle Meldungen vom Level errorbekommen kann und dann z.B. pr
ü
fen, welche Instanz (Quelle) die Meldung ausgel
ö
st hat.
Blockly File-Events (Tempor
ä
rer Dateipfad)Das Datei-Thema kommt ja hier immer wieder auf - und viele schreiben und lesen direkt aus
/opt/iobroker/iobroker-data/files/. Das man das nicht tun sollte und daf
ü
r IMMER die ioBroker-Funktionen nutzen sollte, habe ich ja mittlerweile rauf und runter erkl
ä
rt.Wenn man als Datenbank nicht
jsonlsondernredisnutzt, dann liegen die Dateien ja nichtmal an dieser Stelle im Dateisystem, sondern in der Redis-Datenbank. Das Problem ist nun: Wenn sich eine Datei
ä
ndert, dann kann man damit in Blockly noch nicht viel machen. Bausteine wie Pushover, Mail, Telegram usw. wollen einen Pfad zu einer Datei haben. Das Thema habe ich auf GitHub auch schon platziert.Nun gibt es aber bei einer Redis-Datenbank keinen Pfad im Dateisystem. Also habe ich eine neue Funktion gebaut, welche die Datei aus dem "ioBroker-Speicher" in das Temp-Verzeichnis des Betriebssystems (unter Linux
/tmp) speichert und einen Pfad zur
ü
ckgibt.Sobald das Script gestoppt wird, wird in diesem Pfad wieder aufger
ä
umt und die tempor
ä
ren Dateien werden gel
ö
scht!Jedenfalls kann man auf diesem Weg aktuell weiterhin Bausteine wie Telegram bedienen und jedes Mal wenn sich eine Datei
ä
ndert diesen Pfad generieren und an andere Bausteine weiterreichen. Beispiel:
Warnungen
Eigentlich gibt es jetzt an jeder Stelle ein Ausrufezeichen im Block, wenn man etwas zusammenbaut, was so nicht gedacht ist (z.B. Trigger in Trigger). So sollte man eigentlich direkt w
ä
hrend der "Programmierung" merken, dass da etwas falsch ist.Solltet ihr noch Vorschl
ä
ge f
ü
r Validierungen haben (wo darf ein Block nicht in einem anderen enthalten sein): Her damit.
Request-Paket is deprecated
Request wird seit Jahren im Adapter genutzt und der Blockly-Baustein "request" nutzt ja genau dieses Paket. Der Block wurde ja bereits in den vorigen Versionen durch "http (GET)" ersetzt. Solltest Du noch die
ä
lteren Bl
ö
cke nutzen, bekommst Du eine Warnung im Log.Ich m
ö
chte das Paket jetzt langsam aber sicher loswerden. Daher generiert jedes require('request');im Log jetzt auch eine Warnung. Scheinbar werden die Changelogs ja nicht gelesen, weswegen man am Ende wohl in
ü
berraschte Gesichter schauen wird, warum ein Script nicht mehr l
ä
uft. Also: Migriert eure Scripts! Und wenn ihr hier im Forum jemanden seht, der Code mit require('request');teilt: Bitte entsprechend darauf hinweisen.In der Zukunft wird das Paket dann endlich aus dem Standard entfernt und nicht mehr mitinstalliert. Man kann es zwar in den Instanzeinstellungen dann manuell noch hinzuf
ü
gen, aber das ist nicht zu empfehlen. request ist seit
ü
ber 4 Jahren deprecated und wird nicht mehr weiter entwickelt! Einfach nicht mehr nutzen...System-Variablen
Seit Version v8.0.0 gibt es unter "System" au
ß
erdem noch ein neuen Baustein.
Ü
ber diese kann der Name des Scripts, der Standard-Verzeichnispfad oder der Status des Verbose-Modus des Scripts ausgegeben werden.
Damit k
ö
nnte man z.B. verbose-Nachrichten schreiben oder Log-Meldungen
ä
ndern, wenn der verbose-Modus aktiv ist (hab ich im ioBroker-Master-Kurs auch erkl
ä
rt, ...):

Vorbereitung auf js-controller 6.x
Das Abh
ä
ngigkeitsmanagement (f
ü
r zus
ä
tzliche Pakte in den Instanzeinstellungen) bringt in der aktuellen npm-Version ein paar Probleme mit sich. Diese werden im js-controller 6.x adressiert und es gibt auch schon die erste Implementierung der neuen Funktionen. Mehr dazu, sobald der js-controller 6 in einer beta verf
ü
gbar ist.Oberfl
ä
cheDie Darstellung des Logs hat sich nun auch leicht ge
ä
ndert und wurde an den Admin angepasst. Die erste Spalte (Quelle) ist neu. Daf
ü
r wird in der Meldung selbst die Instanz nicht mehr angezeigt (wie im Admin halt).
Ansonsten habe ich aus den pixeligen Grafiken zum Umschalten von Blockly/JS und Rules/JS mal Vektorgrafiken gemacht die auch skalieren. Auf Retina-Displays sah das vorher ja schlimm aus


jetzt habe ich doch was - hat meinen javascript adapter lahmgelegt und auch den ganzen iob so verlangsamt, dass er fast nicht mehr reagiert hat - evtl knn man da was abfangen ?
hatte vorher was getestet und eine variable angelegt - tttest

die variable hatte ich vorher deklariert und dann nach dem l
ö
schen dieser deklaration hatte ich vergessen diese varible wieder rauszumachen (siehe pfeil) - danach war dann das log voll - ich musste die javascript instanz stoppen. hier ein auszug aus dem log: -
jetzt habe ich doch was - hat meinen javascript adapter lahmgelegt und auch den ganzen iob so verlangsamt, dass er fast nicht mehr reagiert hat - evtl knn man da was abfangen ?
hatte vorher was getestet und eine variable angelegt - tttest

die variable hatte ich vorher deklariert und dann nach dem l
ö
schen dieser deklaration hatte ich vergessen diese varible wieder rauszumachen (siehe pfeil) - danach war dann das log voll - ich musste die javascript instanz stoppen. hier ein auszug aus dem log:@liv-in-sky sagte in JavaScript 8.3.0 - Log-Trigger, File-Events und Warnungen:
evtl knn man da was abfangen ?
Schwierig. Die Bl
ö
cke (im Text suche ...) kommen ja direkt von Google. Und der Trigger wird halt bei jeder Log-Meldung aufgerufen. Dadurch wird das sehr oft ausgewertet und entsprechen viele Fehler generiert.Noch schlimmer k
ö
nnte es werden, wenn der Block auf die selbst generierte Meldung wieder reagiert. Das k
ö
nnte ich versuchen zu unterbinden. -
@liv-in-sky sagte in JavaScript 8.3.0 - Log-Trigger, File-Events und Warnungen:
evtl knn man da was abfangen ?
Schwierig. Die Bl
ö
cke (im Text suche ...) kommen ja direkt von Google. Und der Trigger wird halt bei jeder Log-Meldung aufgerufen. Dadurch wird das sehr oft ausgewertet und entsprechen viele Fehler generiert.Noch schlimmer k
ö
nnte es werden, wenn der Block auf die selbst generierte Meldung wieder reagiert. Das k
ö
nnte ich versuchen zu unterbinden.@haus-automatisierung sagte in JavaScript 8.3.0 - Log-Trigger, File-Events und Warnungen:
jeder Log-Meldung aufgerufen. Dadurch wird das sehr oft ausgewertet
das w
ü
rde erkl
ä
ren, warum so viele meldungen - sind quasi in einer endlos-schleife - zuerst der fehler und dann die reaktion auf den fehler, auf den fehler, auf den fehler .......... -
@liv-in-sky sagte in JavaScript 8.3.0 - Log-Trigger, File-Events und Warnungen:
evtl knn man da was abfangen ?
Schwierig. Die Bl
ö
cke (im Text suche ...) kommen ja direkt von Google. Und der Trigger wird halt bei jeder Log-Meldung aufgerufen. Dadurch wird das sehr oft ausgewertet und entsprechen viele Fehler generiert.Noch schlimmer k
ö
nnte es werden, wenn der Block auf die selbst generierte Meldung wieder reagiert. Das k
ö
nnte ich versuchen zu unterbinden.evtl. den trigger disablen, wenn in kurzer zeit immer wieder der selbe trigger kommt ?
-
evtl. den trigger disablen, wenn in kurzer zeit immer wieder der selbe trigger kommt ?
@haus-automatisierung
@Homoran
@paul53
@liv-in-sky
@DJMarc75Huhu,
wollte nun auch mal den Request Block loswerden, auch weil das Log nervt
Tja. Was soll ich sagen. Ist nicht so einfach
Ausgangsblockly

L
ä
uft tadellos. Wenn da nicht die Logeintr
ä
ge w
ä
ren 
Mit dem gef
ä
hrlichen Halbwissen umgestellt:
Das steht nun im DP

Das sollte normal drinstehen:

-
@haus-automatisierung
@Homoran
@paul53
@liv-in-sky
@DJMarc75Huhu,
wollte nun auch mal den Request Block loswerden, auch weil das Log nervt
Tja. Was soll ich sagen. Ist nicht so einfach
Ausgangsblockly

L
ä
uft tadellos. Wenn da nicht die Logeintr
ä
ge w
ä
ren 
Mit dem gef
ä
hrlichen Halbwissen umgestellt:
Das steht nun im DP

Das sollte normal drinstehen:

m
ü
ß
te am result baustein liegen - nimm den Data-baustein -
@haus-automatisierung
@Homoran
@paul53
@liv-in-sky
@DJMarc75Huhu,
wollte nun auch mal den Request Block loswerden, auch weil das Log nervt
Tja. Was soll ich sagen. Ist nicht so einfach
Ausgangsblockly

L
ä
uft tadellos. Wenn da nicht die Logeintr
ä
ge w
ä
ren 
Mit dem gef
ä
hrlichen Halbwissen umgestellt:
Das steht nun im DP

Das sollte normal drinstehen:

-
@haus-automatisierung
@Homoran
@paul53
@liv-in-sky
@DJMarc75Huhu,
wollte nun auch mal den Request Block loswerden, auch weil das Log nervt
Tja. Was soll ich sagen. Ist nicht so einfach
Ausgangsblockly

L
ä
uft tadellos. Wenn da nicht die Logeintr
ä
ge w
ä
ren 
Mit dem gef
ä
hrlichen Halbwissen umgestellt:
Das steht nun im DP

Das sollte normal drinstehen:

@haselchen sagte in JavaScript 8.3.0 - Log-Trigger, File-Events und Warnungen:
Mit dem gef
ä
hrlichen Halbwissen umgestellt:
- Das ganze arbeitet wie vorher auch mit Callbacks. Also bitte die anderen Bl
ö
cke auch wieder da rein (wie bei Request). - Und deine
resultVariable l
ö
schen. Das war schon immer unsch
ö
n gel
ö
st, gerade wenn man mehrere Request-Bausteine im gleichen Script hatte (siehe Scope von var). Jedenfalls gibts daf
ü
r jetzt andere Bausteine, welche das Ergebnis direkt enthalten (so wie bei den Triggern). Keine Variablen mehr manuell anlegen! Und die merken dann auch, wenn sie falsch genutzt werden und sich gar nicht innerhalb eines httpGet oder Post Bausteines befinden.
- Das ganze arbeitet wie vorher auch mit Callbacks. Also bitte die anderen Bl
-
@haselchen sagte in JavaScript 8.3.0 - Log-Trigger, File-Events und Warnungen:
Mit dem gef
ä
hrlichen Halbwissen umgestellt:
- Das ganze arbeitet wie vorher auch mit Callbacks. Also bitte die anderen Bl
ö
cke auch wieder da rein (wie bei Request). - Und deine
resultVariable l
ö
schen. Das war schon immer unsch
ö
n gel
ö
st, gerade wenn man mehrere Request-Bausteine im gleichen Script hatte (siehe Scope von var). Jedenfalls gibts daf
ü
r jetzt andere Bausteine, welche das Ergebnis direkt enthalten (so wie bei den Triggern). Keine Variablen mehr manuell anlegen! Und die merken dann auch, wenn sie falsch genutzt werden und sich gar nicht innerhalb eines httpGet oder Post Bausteines befinden.
Wenn doch im Leben alles so einfach w
ä
re 

Das ist die L
ö
sung.
Dankesch
ö
n an Alle!Edit: eine kleeeeeeine Frage ist da noch.
Ich habe bei einem Blocky eine Variable gesetzt.
Result.Nun gibt es ja den Data Baustein , wie muss dieser Block jetzt aussehen?

- Das ganze arbeitet wie vorher auch mit Callbacks. Also bitte die anderen Bl
-
Wenn doch im Leben alles so einfach w
ä
re 

Das ist die L
ö
sung.
Dankesch
ö
n an Alle!Edit: eine kleeeeeeine Frage ist da noch.
Ich habe bei einem Blocky eine Variable gesetzt.
Result.Nun gibt es ja den Data Baustein , wie muss dieser Block jetzt aussehen?

@haselchen sagte: Ich habe bei einem Blocky eine Variable gesetzt.
Wozu?
-
Wenn doch im Leben alles so einfach w
ä
re 

Das ist die L
ö
sung.
Dankesch
ö
n an Alle!Edit: eine kleeeeeeine Frage ist da noch.
Ich habe bei einem Blocky eine Variable gesetzt.
Result.Nun gibt es ja den Data Baustein , wie muss dieser Block jetzt aussehen?

@haselchen verstehe das auch nicht ganz
vermutung - so rein theoretisch - du fragst beim resultat(data) nur auf ungleich null
wenn aber daten kommen, die inverter.ts_lastsuccess nicht enthalten, wird "bl
ö
dsinn" in deinen datenpunkt geschrieben (falls das
ü
berhaupt vorkommen kann) bzw wird ein script fehler kommenevtl m
ü
ß
te man das anders abfragen - eben nicht nach null und dann reagierendas result zu setzen, macht hier keinen sinn
-
@haselchen verstehe das auch nicht ganz
vermutung - so rein theoretisch - du fragst beim resultat(data) nur auf ungleich null
wenn aber daten kommen, die inverter.ts_lastsuccess nicht enthalten, wird "bl
ö
dsinn" in deinen datenpunkt geschrieben (falls das
ü
berhaupt vorkommen kann) bzw wird ein script fehler kommenevtl m
ü
ß
te man das anders abfragen - eben nicht nach null und dann reagierendas result zu setzen, macht hier keinen sinn
Das steht da noch drin , weil ich ja nicht wei
ß
wie ich es
ä
ndern muss .
Die anderen Variabeln waren ja result.
Jetzt ge
ä
ndert auf Data.Das Ganze ist schon l
ä
nger her.
Ich vermute auch , wenn keine Daten mehr kommen das da Bl
ö
dsinn im DP steht . Deswegen hatte ich es so gel
ö
st. -
Das steht da noch drin , weil ich ja nicht wei
ß
wie ich es
ä
ndern muss .
Die anderen Variabeln waren ja result.
Jetzt ge
ä
ndert auf Data.Das Ganze ist schon l
ä
nger her.
Ich vermute auch , wenn keine Daten mehr kommen das da Bl
ö
dsinn im DP steht . Deswegen hatte ich es so gel
ö
st.@haselchen sagte: Ich vermute auch , wenn keine Daten mehr kommen
Die Variable wird nur einmal bei Skriptstart mit dem JSON gef
ü
llt. -
@haselchen sagte: Ich vermute auch , wenn keine Daten mehr kommen
Die Variable wird nur einmal bei Skriptstart mit dem JSON gef
ü
llt. -
Wird ja alle 2 min gestartet , siehe Cron Baustein
Edit : okay, sieht man nur wenn man drauf klickt
Aber es sind alle 2 min@haselchen sagte: Wird ja alle 2 min gestartet
Die Variable wird au
ß
erhalb des Zeitplanes gef
ü
llt. -
@haselchen sagte: Wird ja alle 2 min gestartet
Die Variable wird au
ß
erhalb des Zeitplanes gef
ü
llt.
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden



