NEWS
Bilder in Telegram, variablen und Funktionen
-
Hi,
hoffe mir kann hier irgendwer erklären warum das nicht so funktioniert wie erwartet.
Ich möchte mit Telegram ein Bid verschicken. Das funktioniert so auch problemlos
var DoorbirdImagePath = "/home/pi/DoorbirdPics/2017-09-09_12h46m46s_20.6grad_DailyPic12am.jpg"; sendTo('telegram.0', { text: DoorbirdImagePath, caption: 'Snapshot', disable_notification: true, });
Lasse ich den FilePfad aber in einer globalen Funktion erstellen und über return in die Variable schreiben. Schickt Telegram nur den Pfad als text.
Die variable "DoorbirdImagePath" sieht aber in beiden versionen gleich aus. Selbst wenn ich den von der Fuktion erstellten pfad verwenden und, wie oben, direkt zuweise funktioniert es.
var DoorbirdImagePath = saveDoorbirdImage("DailyPic12am"); sendTo('telegram.0', { text: DoorbirdImagePath, caption: 'Snapshot', disable_notification: true, });
hat jamand eine Idee wo da der unterschied liegt?
Gruß
Sebastian
-
Was wird angezeigt?
var DoorbirdImagePath = saveDoorbirdImage("DailyPic12am"); console.log(DoorbirdImagePath); // <<== Hier? sendTo('telegram.0', { text: DoorbirdImagePath, caption: 'Snapshot', disable_notification: true, });
-
Hi Bluefox, danke für die schnelle reaktion.
Wenn ich das hier ausführe:
var DoorbirdImagePath = saveDoorbirdImage("DailyPic12am"); console.log("#1#" + DoorbirdImagePath); sendTo('telegram.0', { text: DoorbirdImagePath, caption: 'Snapshot', disable_notification: true, }); var DoorbirdImagePath = "/home/pi/DoorbirdPics/2017-09-09_12h46m46s_20.6grad_DailyPic12am.jpg"; console.log("#2#" + DoorbirdImagePath); sendTo('telegram.0', { text: DoorbirdImagePath, caption: 'Snapshot', disable_notification: true, });
Steht im Log das hier. Die Pfade sind verschieden, da der eine aktuell ist und der zweite fest zugewiesen wurde. Den zweiten Pfad habe ich aus Telegram von einem vorherigen test kopiert.
` > 13:47:34.288 [info] javascript.0 script.js.In_Arbeit.DoorbirdImg: #1#/home/pi/DoorbirdPics/2017-09-13_13h47m34s_13.8grad_DailyPic12am.jpg13:47:34.288 [info] javascript.0 script.js.In_Arbeit.DoorbirdImg: #2#/home/pi/DoorbirdPics/2017-09-09_12h46m46s_20.6grad_DailyPic12am.jpg `
Gruß
Sebastian
-
Steht im Log das hier. Die Pfade sind verschieden, da der eine aktuell ist und der zweite fest zugewiesen wurde. Den zweiten Pfad habe ich aus Telegram von einem vorherigen test kopiert.
` > 13:47:34.288 [info] javascript.0 script.js.In_Arbeit.DoorbirdImg: #1#/home/pi/DoorbirdPics/2017-09-13_13h47m34s_13.8grad_DailyPic12am.jpg13:47:34.288 [info] javascript.0 script.js.In_Arbeit.DoorbirdImg: #2#/home/pi/DoorbirdPics/2017-09-09_12h46m46s_20.6grad_DailyPic12am.jpg
Was mich jedoch jetzt wundert. Stimmen denn die Pfade zum Bild?Probiere doch mal den Ordner /tmp/<dein_bild_name>.jpg. Vielleicht darf der Task nicht auf /home/pi zugreifen, wenn er automatisiert ist - das glaube ich sogar sehr, da wahrscheinlich der telegramm task nicht als pi ausgeführt wird.
Kannst ja testweise erst mal ein Bild da rein kopieren und dir den Namen zusammenbasteln.</dein_bild_name>
-
Hi Fitti,
hab's mal mit /tmp/ getestet. Selbes Ergebnis.
Pfad direkt zuweisen geht, über die Funktion geht nicht.
Scheint also nix mit den Rechten zu tz zu haben.
Gruß
Sebastian
-
` > Pfad direkt zuweisen geht, über die Funktion geht nicht.
Scheint also nix mit den Rechten zu tz zu haben. `
Das kann nicht sein. Dann sind irgendwelche Unicode-Zeichen im Pfad drin oder am Ende ein Lehrzeichen… -
Hmm- prinzipiell geht das schon - nutze es ja selbst in meinen Skripten.
Das Problem muss also noch irgendwo anders liegen… entweder wirklich einfach nur in einem "Sonderzeichen" oder in der eigentlichen Logik.
Mich machen noch Deine unterschiedlichen Pfade skeptisch.
Kannst Du dir nicht einfach das Bild selber holen, abspeichern und dann verwenden?
Dann bist Du sicher, das richtige Bild zu haben. Und wenn Du es nur Testweise durchführst.
Ich mache das so (orig-skript - läuft bei mir):
var request = require('request'); var fs = require('fs'); request.get({url: 'http://192.168.1.321/tmpfs/auto.jpg?usr=XXX&pwd=XXX', encoding: 'binary'}, function (err, response, body) { fs.writeFile("/tmp/snap.jpg", body, 'binary', function(err) { if (err) { console.error(err); } else { var info_text = 'Ein neues Bild'; console.log('Snapshot sent'); sendTo('telegram.0', {text: '/tmp/snap.jpg', caption: info_text }); } }); });
http://192.168.1.321/tmpfs/auto.jpg?usr=XXX&pwd=XXX muss natürlich an Deine Umgebung angepasst werden. Diese URL im Browser eingegeben, muss ein BILD anzeigen (kein Video).
Versuchs doch mal damit.
-
Fehler gefunden. Danke Euch für Eure Hilfe.
Anscheinend wurde das Bild verschickt bevor es überhaupt richtig gespeichert war.
Mit einer Sekunde Verzögerung zwischen speichern und "senden an Telegram" funktioniert es problemlos.
setTimeout(function() { sendTo('telegram.0', { text: DoorbirdImagePath, caption: 'Es hat aktuell'+getState("hm-rpc.0.KEQ0174317.1.TEMPERATURE"/*Aussenthermometer Status.TEMPERATURE*/).val + '°C.', disable_notification: true, }); }, 1000);
Gruß und Danke nochmals
Sebastian