NEWS
Javascript 6.1.0 - Neue Funktionen (Beta)
-
@marty56 sagte in Javascript 6.1.0 - Neue Funktionen (Beta):
Schön, dass es wieder ein Update gibt und dass es createAlias gibt. deleteAlias fände ich auch noch wünschenswert.
delObject ist exakt das gleiche, also unnötig.
Der Bug, dass bei on schedule ()... und Neustart des entsprechenden Scripts die Timer nicht gelöscht werden, ist noch drin oder?
Dann poste ich mal das ganze Changelog, dann beantwortet sich deine Frage von allein:
- (Apollon77) Add a configurable check for number of setStates per Minute to prevent scripts from taking down ioBroker. Default are 1000 setState per minute. Only stops if the number is reached 2 minutes in a row!
- (Apollon77) Add createAlias method to create aliases for states
- (Apollon77) Add setStateDelayed to selector
- (Apollon77) Add options to exec command
- (Apollon77) Fix issues with cancelling schedules when stopping scripts
- (bluefox) Corrected debug mode
Gefixter Debugger und das mit den Schedules fällt unter die "Fehlerbehebungen" die oben genannt, aber nicht weiter ausgeführt, sind ;)
@apollon77 sagte in Javascript 6.1.0 - Neue Funktionen (Beta):
Der Bug, dass bei on schedule ()... und Neustart des entsprechenden Scripts die Timer nicht gelöscht werden, ist noch drin oder?
Dann poste ich mal das ganze Changelog, dann beantwortet sich deine Frage von allein:
Dabei fällt mir gerade folgende Frage ein: Kann man die laufenden Timer irgendwo sehen?
-
@paul53 Danke!
-
Ich habe tatsächlich diesen neuen Fehler "setState Checker" bekommen, bei einem Script.
Script script.js.common.Energie is calling setState more than 1000 times per minute! Stopping Script now! Please check your scriptEs wäre schön, wenn man etwas mehr Infos zu dem State oder der Zeile bekommen könnte, wo dieser Fehler auftritt.
-
Ich habe tatsächlich diesen neuen Fehler "setState Checker" bekommen, bei einem Script.
Script script.js.common.Energie is calling setState more than 1000 times per minute! Stopping Script now! Please check your scriptEs wäre schön, wenn man etwas mehr Infos zu dem State oder der Zeile bekommen könnte, wo dieser Fehler auftritt.
@marty56 ich hab keine Ahnung von javascript.
Aber was für Infos fehlen dir denn?such mal alle setState()
da scheinen in einer Schleife im Millisekundentakt States geprüft zu werden. -
Ich habe tatsächlich diesen neuen Fehler "setState Checker" bekommen, bei einem Script.
Script script.js.common.Energie is calling setState more than 1000 times per minute! Stopping Script now! Please check your scriptEs wäre schön, wenn man etwas mehr Infos zu dem State oder der Zeile bekommen könnte, wo dieser Fehler auftritt.
@marty56 er zählt alle set state pro Skript. Des Weiteren einmal pro Minute schaut er nach der Zahl. Wie soll man das denn auf ein einzelnes setState runterbrechen? Das geht nicht.
Starte dein Skript im verbose Mode und jede Aktion wird geloggt. Dann siehst du vllt mehr.
Und ja es kann ja sein das das für das Skript ok ist. Aber solltest du prüfen bevor du das Limit hoch setzt.
-
@paul53 hm … ok ich stehende einen Fehler das in Beispielen createState kommt. Aber wo ist variable? Ok muss ich nachher mal am pc suchen. Oder mach nen pr :-))
@apollon77 createState('myAlias', {id: {read: 'myReadValiable', write: 'myWriteVariable'}})
vielleicht besser datapoint -
@apollon77 createState('myAlias', {id: {read: 'myReadValiable', write: 'myWriteVariable'}})
vielleicht besser datapoint -
@paul53 hm … ok ich stehende einen Fehler das in Beispielen createState kommt. Aber wo ist variable? Ok muss ich nachher mal am pc suchen. Oder mach nen pr :-))
@apollon77 sagte: mach nen pr :-))
Erledigt.
-
@apollon77 sagte: mach nen pr :-))
Erledigt.
-
@apollon77 sagte: mach nen pr :-))
Erledigt.
-
@apollon77 sagte in Javascript 6.1.0 - Neue Funktionen (Beta):
Der JavaScript Adapter überwacht ab sofort die Anzahl der setState pro Skript und wenn dies pro Minute mehr als 1000 sind (der Wert ist global im Adapter konfigurierbar) - 1000/Min sind 16 pro Sekunde - wird das Skript beendet! Ein Fehler wird geloggt.
Mhh, sehe ich das nur im Log? Ich spiele darauf an mich z.B. per Telegram benachrichtigen zu lassen. Die States unter
javascript.0.scriptEnabledzu überwachen ist denke ich nicht hilfreich.
Mein Monitoring kann aber auch mit Log-Dateien umgehen - ich bräuchte dafür aber mal eine Beispiel wie so ein Logeintrag aussieht.Ansonsten: Klasse Idee!
-
@apollon77 sagte in Javascript 6.1.0 - Neue Funktionen (Beta):
Der JavaScript Adapter überwacht ab sofort die Anzahl der setState pro Skript und wenn dies pro Minute mehr als 1000 sind (der Wert ist global im Adapter konfigurierbar) - 1000/Min sind 16 pro Sekunde - wird das Skript beendet! Ein Fehler wird geloggt.
Mhh, sehe ich das nur im Log? Ich spiele darauf an mich z.B. per Telegram benachrichtigen zu lassen. Die States unter
javascript.0.scriptEnabledzu überwachen ist denke ich nicht hilfreich.
Mein Monitoring kann aber auch mit Log-Dateien umgehen - ich bräuchte dafür aber mal eine Beispiel wie so ein Logeintrag aussieht.Ansonsten: Klasse Idee!
@bananajoe ja aktuell nur log. Man könnte theoretisch noch den scriptProblem state Zähler erhöhen.
Zum Beispiel: scroll mal hier im thread hoch. marty56 war reingerannt ;-)
-
@bananajoe ja aktuell nur log. Man könnte theoretisch noch den scriptProblem state Zähler erhöhen.
Zum Beispiel: scroll mal hier im thread hoch. marty56 war reingerannt ;-)
@apollon77 Gefunden. ist dann ein
Error? (Du hats im Eingangspost geschrieben das ein Fehler geloggt wird) -
@apollon77 Gefunden. ist dann ein
Error? (Du hats im Eingangspost geschrieben das ein Fehler geloggt wird)@bananajoe ja. As i remember
-
@bananajoe ja. As i remember
@apollon77 sagte in Javascript 6.1.0 - Neue Funktionen (Beta):
As i remember
geht das bei dir auch schon los? :duckundwech:
-
@apollon77 sagte in Javascript 6.1.0 - Neue Funktionen (Beta):
As i remember
geht das bei dir auch schon los? :duckundwech:
@appollon
Hi,
Da ich immer diese massenhaften Abstürze bei den Aliases habe, möchte ich mein Alias Genierungsscript jetzt auf das offizielle API umstellen.
Leider kappiere ich die Syntax nicht richtig.Alle Beispiele sollen überschreiben eines existierenden Alias enforcen.
Beispiel 1.
Ich möchte z.B. einen Wert invertieren.createAlias('alias.0.Test.test', 'hm-rpc.0.KEQ0172616.1.STATE',true, {alias: { read: '!val'} })wird schon in der Syntax nicht angenommen.
Beispiel 2:
Und ich würde gerne den Typ des Alias ändern.
Use Case. Es wird die Batterie in % gemessen im Original Datenpunkt und es soll ein Alias erzeugt werden, der boolean ausgibt, z.B. "low_bat".Irgendwie so
createAlias('OG_Taster_3_LOWBAT', 'zigbee.0.943469fffe668b6a.battery',true, { name: "Zigbee Taster am Sofa im OG", type: "mixed", unit: "", alias: { read: "val < 20 ? true : false"} })letztlich soll der Alias so aussehen
{ "type": "state", "common": { "name": "Zigbee Taster am Sofa im OG", "type": "mixed", "unit": "", "read": true, "write": false, "role": "value.battery", "min": 0, "max": 100, "icon": "img/battery_p.png", "alias": { "id": "zigbee.0.943469fffe668b6a.battery", "read": "val < 20 ? true : false" } }, "from": "system.adapter.javascript.0", "user": "system.user.admin", "ts": 1667491683697, "_id": "alias.0.OG_Taster_3_LOWBAT", "acl": { "object": 1636, "state": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } }