NEWS
WGET funktioniert nicht im Blockly
-
Hallo zusammen,
ich habe ein Problem, welches so ähnlich beschrieben auch in folgendem Post zu finden ist. Allerdings hat die Problemlösung bei mir nicht geholfen. Ich vermute das liegt daran, dass mein IOBROKER über Docker installiert wurde und dieser gar nicht auf den home Pfad /opt/iobroker zugreift.Über Motioncam wird bei mir über einen Link das aktuelle Bild meiner Kamera ausgegeben. Hier kann ich ganz normal über den Browser zugreifen und es wird ein Bild im Browser geöffnet. Auch wenn ich im Pfad opt/iobroker/ den Ordner Motioncam anlege und hier über die Console den WGET Befehl öffne wird das Bild hier gespeichert.
Führe ich allerdings das Blockly aus wird mir nur der Text gesendet.
Auch die Datei bleibt unverändert. Ich vermute ich bin auf dem falschen Pfad unterwegs. Kann das sein?Auf dem Dockercontainer ist folgender Mountpath Volume hinterlegt:
Ich bin jetzt nicht der Experte und hoffe von euch ein paar nützliche Tipps zu bekommen.
PS.: ich habe auch bereits im WGET Befehl beim Aufruf alle möglichen ?usr=xxx&pwd=XXXX Kombinationen verwendet.
Grüße Chronos
-
@chronos81 Mit Docker wird das nichts zu tun haben. Im Container ist der Pfad ja richtig. Aber lass dir mal stderr vom exec Block ausgeben. Je nach Version des JavaScript-Adapters musst Du die Variablen (
stderr
) manuell anlegen und dann an einen Debug-Output hängen.Und schmeiß den Timeout raus
Der Telegram Block gehört da rein ("mit Ergebnissen" anhaken!). Dann musst nicht „raten“ wann der exec fertig sein könnte, sondern weißt es ganz sicher.
-
@haus-automatisierung Danke dir für die schnelle Antwort.
Ich habe jetzt mal mit meinen rudimentären Blockly Kenntnissen versucht hier eine Debug Ausgabe der Variable stderr, irgendwo anzeigen zu lassen. Hier hat es mir aber in beiden Fällen nichts ausgegeben. muss ich sonst noch was einstellen?
Sorry für die Anfängerfragen -
@chronos81 Mach mal Debug aus. Oben rechts auf dem Schraubenschlüssel im Script. Steht ja in der Meldung dass deswegen der exec Block nicht ausgeführt wurde
-
@haus-automatisierung Ups, ja das war offensichtlich.
Aber leider dennoch keine weiteren Informationen warum es nicht geht.Oder ich habe vergessen die Debug Infos irgendwo auszugeben.
-
@chronos81 Nicht auf debug loglevel loggen, sondern auf info (oder höher). Also auf dem Debug-Baustein „info“ wählen.
Sonst wird die Meldung höchstwahrscheinlich von den Loglevel Einstellungen deiner Javascript Instanz gefiltert
Du solltest Dir wirklich die Basics anschauen
-
@haus-automatisierung Ja ich schaue mir die Basics bestimmt an. Alleine die Zeit ist rar.
Ich habe mir nun den Debug nochmal angeschaut. Es zeigt mir an, dass es keine solche Datei oder Ordner gibt.Nachdem ich aber auch die Datei über wget direkt in der Konsole hinzugefügt habe sieht man hier den Auszug aus selbiger mit den maximalen Rechten:
Daher weiß ich nicht wo das Blockly nach den Dateien sucht.
-
@chronos81 Nimm mal als Zielpfad
/tmp/namedesbildes.jpg
, also in den Temporären Ordner.
Dahin sollte er (als Benutzer iobroker) immer schreiben dürfen, den Pfad benutze ich bei mir für das gleiche Szenario -
@chronos81 Ich glaube dein Fehler liegt am wget Parameter. Da fehlt ein
=
. Laut man Page:-O --output-document=DATEI Dokumente in DATEI schreiben
Heißt, entweder
-O
verwenden, oder--output-document=
. Ist mir am Handy gestern Sbend nicht direkt aufgefallen, sorry.wget --output-document=/opt/iobroker/motioncam/Haustuer.jpg "http://192.168.0.10:8765/picture/1/current/" wget -O /opt/iobroker/motioncam/Haustuer.jpg "http://192.168.0.10:8765/picture/1/current/"
-
@bananajoe Danke für deinen Hinweis. Das hat für mich nun so geklappt, super!
-
@haus-automatisierung nach dem Hinweis von @BananaJoe hat es bei mir mit dem tmp Ordner geklappt. Den Wget Befehl anzupassen werde ich heute Abend nochmals versuchen und ein Ergebnis hier posten.
Danke für eure Hilfe.
-
@chronos81 Und: Generell machst du immer etwas falsch, wenn Du 777 als Datei- oder Ordnerberechtigungen setzen musst. Ich weiß nicht, unter welchem Nutzer der ioBroker im Container läuft, aber das ist nie die richtige Lösung
-
@haus-automatisierung Ja das weiß ich. Das war nur zum Test als temporäre Maximallösung bezüglich der Berechtigungen gedacht um dem Fehler auf die Schliche zu kommen.
-
Noch besser ist es wenn man zu. Testen auf der console die Shell als Benutzer Iobroker aufruft
sudo -u Iobroker bash