NEWS
SendTo-Blockly für Bilderstellung geht nicht
-
Hallo zusammen,
ich versuche, wie im Blog-Eintrag von @haus-automatisierung hier geschrieben, ein eChart-Diagramm auf Festplatte zu speichern und das ganze dann zwar nicht per Telegram, aber über Pushover zu versenden.Die benötigten Pakete sind alle installiert.
Allerdings erhalte ich im sendTo-Block nicht den Block, wie er im Blog dargestellt ist:
Ich kann zwar das Blockly importieren, aber so wie ich das Skript verstanden hab, ist der sendTo-Block ja dafür zuständig, das eCharts-Diagramm auf Platte zu speichern.
Das funktioniert aber bei mir nicht.
Aber den SendTo-Block wie im Blog erhalte ich nicht orginär in der Auswahl der Blockly-Elemente.
Den erhalte ich lediglich, weil ich das Skript importiert hatte.Im Log steht lediglich:
script.js.Test2: sendTo[custom] echarts.0: preset: echarts.0.Temperatur.Heizung, renderer: jpg, background: #FFFFFF, theme: light, quality: 0.8, fileOnDisk: /opt/iobroker/iobroker-data/echarts-tmp.jpgDie Datei wurde mir zuerst nicht angelegt - ich hab sie über den touch-Befehl manuell erstellt und die Rechte auf den iobroker-Nutzer geändert.
Dateigröße bleibt aber 0 Byte.Mein Skript dazu schaut so aus:

Hier meine System-Daten:
Node.js:v20.19.5 NPM:10.8.2 _nodeCurrent:20.19.5 _nodeNewest:20.19.5 _nodeNewestNext:22.21.1 _npmCurrent:10.8.2 _npmNewest:10.8.2 _npmNewestNext:10.9.4Danke für eure Unterstützung und Hilfe.
-
Hallo zusammen,
ich versuche, wie im Blog-Eintrag von @haus-automatisierung hier geschrieben, ein eChart-Diagramm auf Festplatte zu speichern und das ganze dann zwar nicht per Telegram, aber über Pushover zu versenden.Die benötigten Pakete sind alle installiert.
Allerdings erhalte ich im sendTo-Block nicht den Block, wie er im Blog dargestellt ist:
Ich kann zwar das Blockly importieren, aber so wie ich das Skript verstanden hab, ist der sendTo-Block ja dafür zuständig, das eCharts-Diagramm auf Platte zu speichern.
Das funktioniert aber bei mir nicht.
Aber den SendTo-Block wie im Blog erhalte ich nicht orginär in der Auswahl der Blockly-Elemente.
Den erhalte ich lediglich, weil ich das Skript importiert hatte.Im Log steht lediglich:
script.js.Test2: sendTo[custom] echarts.0: preset: echarts.0.Temperatur.Heizung, renderer: jpg, background: #FFFFFF, theme: light, quality: 0.8, fileOnDisk: /opt/iobroker/iobroker-data/echarts-tmp.jpgDie Datei wurde mir zuerst nicht angelegt - ich hab sie über den touch-Befehl manuell erstellt und die Rechte auf den iobroker-Nutzer geändert.
Dateigröße bleibt aber 0 Byte.Mein Skript dazu schaut so aus:

Hier meine System-Daten:
Node.js:v20.19.5 NPM:10.8.2 _nodeCurrent:20.19.5 _nodeNewest:20.19.5 _nodeNewestNext:22.21.1 _npmCurrent:10.8.2 _npmNewest:10.8.2 _npmNewestNext:10.9.4Danke für eure Unterstützung und Hilfe.
-
@Thomas-Braun
Hab ich versucht, klappt aber nicht.
Über die Oberfläche kann ich zwar aktualisieren, iobroker sagt auch, das Update wäre erfolgreich, aber die Versionsnummern ändern sich nicht.Ich hab mein System unter Proxmox laufen und mit den iobroker-Skript den iobroker installiert.
In der Konsole kann ich mit root arbeiten.
Hier scheitert ein "iob nodejs-update" daran, dass man eben nicht mit root arbeiten soll.
Ich hab zwar ein iobroker-Verzeichnis unter /home, kann aber nicht mit "su iobroker" in diesen User wechseln - da erhalte ich die Meldung "This account is currently not available".
Wenn ich mit --allow-root arbeite, kommt dennoch:root@iobroker:/opt/iobroker# iob nodejs-update 22 --allow-root Valid major version This script must not be run as root! Please use your standard user! root@iobroker:/opt/iobroker# -
@Thomas-Braun
Hab ich versucht, klappt aber nicht.
Über die Oberfläche kann ich zwar aktualisieren, iobroker sagt auch, das Update wäre erfolgreich, aber die Versionsnummern ändern sich nicht.Ich hab mein System unter Proxmox laufen und mit den iobroker-Skript den iobroker installiert.
In der Konsole kann ich mit root arbeiten.
Hier scheitert ein "iob nodejs-update" daran, dass man eben nicht mit root arbeiten soll.
Ich hab zwar ein iobroker-Verzeichnis unter /home, kann aber nicht mit "su iobroker" in diesen User wechseln - da erhalte ich die Meldung "This account is currently not available".
Wenn ich mit --allow-root arbeite, kommt dennoch:root@iobroker:/opt/iobroker# iob nodejs-update 22 --allow-root Valid major version This script must not be run as root! Please use your standard user! root@iobroker:/opt/iobroker#@MJAS sagte in SendTo-Blockly für Bilderstellung geht nicht:
Hab ich versucht, klappt aber nicht.
Dann ist dein System nicht richtig eingerichtet.
Periob nodejs-updateIn der Konsole kann ich mit root arbeiten.
und NICHT als root!!! Nie! Auch nicht 'nur' in der Konsole. Leg dir einen user an.
Zur Not periob fix -
@Thomas-Braun
Hab ich versucht, klappt aber nicht.
Über die Oberfläche kann ich zwar aktualisieren, iobroker sagt auch, das Update wäre erfolgreich, aber die Versionsnummern ändern sich nicht.Ich hab mein System unter Proxmox laufen und mit den iobroker-Skript den iobroker installiert.
In der Konsole kann ich mit root arbeiten.
Hier scheitert ein "iob nodejs-update" daran, dass man eben nicht mit root arbeiten soll.
Ich hab zwar ein iobroker-Verzeichnis unter /home, kann aber nicht mit "su iobroker" in diesen User wechseln - da erhalte ich die Meldung "This account is currently not available".
Wenn ich mit --allow-root arbeite, kommt dennoch:root@iobroker:/opt/iobroker# iob nodejs-update 22 --allow-root Valid major version This script must not be run as root! Please use your standard user! root@iobroker:/opt/iobroker#@MJAS sagte in SendTo-Blockly für Bilderstellung geht nicht:
Ich hab mein System unter Proxmox laufen und mit den iobroker-Skript den iobroker installiert.
In der Konsole kann ich mit root arbeiten.Das Eine hat mit dem Anderen gar nix zu tun.
Ob Proxmox oder nicht: Man arbeitet nicht alsrootsondern mit 'nem eigenen User.
-
@MJAS sagte in SendTo-Blockly für Bilderstellung geht nicht:
Ich hab mein System unter Proxmox laufen und mit den iobroker-Skript den iobroker installiert.
In der Konsole kann ich mit root arbeiten.Das Eine hat mit dem Anderen gar nix zu tun.
Ob Proxmox oder nicht: Man arbeitet nicht alsrootsondern mit 'nem eigenen User.
@Codierknecht sagte in SendTo-Blockly für Bilderstellung geht nicht:
Man arbeitet nicht als root sondern mit 'nem eigenen User.
...denn dann funktioniert das auch alles (inkl. nodejs-update) wie gedacht und vorgesehen.
-
Also...
Ist nun alles bereinigt, user iobroker ist aktiv und nodejs-update ist durchgelaufen, mein normaler User geht jetzt auch.
Nun sehen die System-Daten so aus:Node.js:v22.21.0 NPM:10.9.4 _nodeCurrent:22.21.0 _nodeNewest:22.21.1 _nodeNewestNext:22.21.1 _npmCurrent:10.9.4 _npmNewest:10.9.4 _npmNewestNext:10.9.4 -
Hallo zusammen,
ich versuche, wie im Blog-Eintrag von @haus-automatisierung hier geschrieben, ein eChart-Diagramm auf Festplatte zu speichern und das ganze dann zwar nicht per Telegram, aber über Pushover zu versenden.Die benötigten Pakete sind alle installiert.
Allerdings erhalte ich im sendTo-Block nicht den Block, wie er im Blog dargestellt ist:
Ich kann zwar das Blockly importieren, aber so wie ich das Skript verstanden hab, ist der sendTo-Block ja dafür zuständig, das eCharts-Diagramm auf Platte zu speichern.
Das funktioniert aber bei mir nicht.
Aber den SendTo-Block wie im Blog erhalte ich nicht orginär in der Auswahl der Blockly-Elemente.
Den erhalte ich lediglich, weil ich das Skript importiert hatte.Im Log steht lediglich:
script.js.Test2: sendTo[custom] echarts.0: preset: echarts.0.Temperatur.Heizung, renderer: jpg, background: #FFFFFF, theme: light, quality: 0.8, fileOnDisk: /opt/iobroker/iobroker-data/echarts-tmp.jpgDie Datei wurde mir zuerst nicht angelegt - ich hab sie über den touch-Befehl manuell erstellt und die Rechte auf den iobroker-Nutzer geändert.
Dateigröße bleibt aber 0 Byte.Mein Skript dazu schaut so aus:

Hier meine System-Daten:
Node.js:v20.19.5 NPM:10.8.2 _nodeCurrent:20.19.5 _nodeNewest:20.19.5 _nodeNewestNext:22.21.1 _npmCurrent:10.8.2 _npmNewest:10.8.2 _npmNewestNext:10.9.4Danke für eure Unterstützung und Hilfe.
@MJAS sagte in SendTo-Blockly für Bilderstellung geht nicht:
Allerdings erhalte ich im sendTo-Block nicht den Block, wie er im Blog dargestellt ist:
Das ist ja der komplett generische sendTo-Block. Der kommt von keinem Adapter oder so. Da werden einfach die richtigen Parameter über das Zahnrad hinzugefügt. Habe ich im Kurs auch erklärt.
@MJAS sagte in SendTo-Blockly für Bilderstellung geht nicht:
Die Datei wurde mir zuerst nicht angelegt - ich hab sie über den touch-Befehl manuell erstellt und die Rechte auf den iobroker-Nutzer geändert.
Das ist komplett unnötig. Wenn der Prozess nicht klappt, funktioniert eventuell etwas anderes nicht. Aktuell kann es folgende Probleme geben:
- Mit Node 22 brauchst Du eCharts >= 2.0.9. Am besten gleich die aktuellste Beta nutzen (2.0.10). Installation wie immer über npm und nie über GitHub.
- Eventuell ist auch ein Rebuild von
canvasnötig:
cd /opt/iobroker/node_modules/canvas/ sudo -u iobroker npm install --omit=dev -
Ach und mittlerweile würde ich eher mit den Blöcken für "Temp-Pfade" arbeiten. Dann kümmert sich der Adapter auch darum, dass alles aufgeräumt wird und nie alten Daten nicht auf der Festplatte rumliegen...
-
Hallo Matthias,
danke für die Rückmeldung.
eCharts läuft bei mir in Version 2.0.10, bei canvas hab ich mit dem von Dir genannten Befehl ein Rebuild gemacht.
Die selber angelegte Datei hab ich gelöscht und dann mein Skript laufen lassen.
Allerdings klappt das nicht, die Datei wird nicht neu angelegt und ich erhalte im Protokoll folgende Meldungen:Error: ENOENT: no such file or directory, open '/opt/iobroker/iobroker-data/echarts-tmp.jpg' at Object.openSync (node:fs:561:18) at Object.readFileSync (node:fs:445:35) at loadImage (/opt/iobroker/node_modules/pushover-notifications/lib/pushover.js:34:15) at Pushover.send (/opt/iobroker/node_modules/pushover-notifications/lib/pushover.js:206:51) at Pushover.sendNotification (/opt/iobroker/node_modules/iobroker.pushover/main.js:204:23) at Pushover.processMessage (/opt/iobroker/node_modules/iobroker.pushover/main.js:82:18) at Pushover.onMessage (/opt/iobroker/node_modules/iobroker.pushover/main.js:37:33) at Pushover.emit (node:events:519:28) at change (/opt/iobroker/node_modules/@iobroker/js-controller-adapter/build/cjs/lib/adapter/adapter.js:7309:20) at Immediate.<anonymous> (file:///opt/iobroker/node_modules/@iobroker/db-states-redis/build/esm/lib/states/statesInRedisClient.js:286:37) pushover.0 2025-11-25 18:42:00.074 error unhandled promise rejection: ENOENT: no such file or directory, open '/opt/iobroker/iobroker-data/echarts-tmp.jpg' pushover.0 2025-11-25 18:42:00.074 error Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch().Gibt das vielleicht mehr Aufschluss, was schief läuft?
Danke für die Unterstützung!
Gruß
Martin -
Ich hab nun verstanden, was die Fehlermeldung bedeutet und @haus-automatisierung hatte ja bereits in seinem Blog die Fehlerabfangschleife mit drin, die ich dummerweise rausgeworfen hatte.
Mein Blockly sieht nun so aus - es wird aber dennoch kein JPG auf der Platte angelegt.
Im Protokoll kommt dann lediglich einscript.js.Test2: timeout
Könnt ihr mal bitte drauf schauen, wo ich noch einen Fehler haben könnte?
Vielen Dank im voraus!
-
Ich hab nun verstanden, was die Fehlermeldung bedeutet und @haus-automatisierung hatte ja bereits in seinem Blog die Fehlerabfangschleife mit drin, die ich dummerweise rausgeworfen hatte.
Mein Blockly sieht nun so aus - es wird aber dennoch kein JPG auf der Platte angelegt.
Im Protokoll kommt dann lediglich einscript.js.Test2: timeout
Könnt ihr mal bitte drauf schauen, wo ich noch einen Fehler haben könnte?
Vielen Dank im voraus!
@MJAS sagte in SendTo-Blockly für Bilderstellung geht nicht:
Könnt ihr mal bitte drauf schauen, wo ich noch einen Fehler haben könnte?
Timeout heißt ja nur, dass Dein System das nicht schnell genug zurückliefert. Muss mal schauen, ob man den Timeout per Blockly aktuell übergeben kann, oder ob das immer ein Stadardwert ist.
-
@MJAS sagte in SendTo-Blockly für Bilderstellung geht nicht:
Könnt ihr mal bitte drauf schauen, wo ich noch einen Fehler haben könnte?
Timeout heißt ja nur, dass Dein System das nicht schnell genug zurückliefert. Muss mal schauen, ob man den Timeout per Blockly aktuell übergeben kann, oder ob das immer ein Stadardwert ist.
@haus-automatisierung Konntest Du rausfinden, ob man den Timeout in Blockly übergeben kann?
-
So wie ich das sehe wird aktuell immer der Default von 2000 ms genutzt.