NEWS
Netatmo Adapter Live camera picture URL per Telegram senden
-
Hallo Thomas,
heute Morgen habe ich festgestellt, dass sich der Link doch ändert.
Unter dem Objekt netatmo.0.Wohnbereich.Lampe.live.picture steht jetzt anstatt v7 nun v11.
Somit gehts natürlich auch nicht.
Das eigentlich Objekt, also netatmo.0.Wohnbereich.Lampe.live.picture kann man nicht hinterlegen, oder?
Ich bin leider noch recht frisch in Sachen iobroker und Blockly.
Daher fällt es mir auch schwer, Deinen angegebenen Link auf die Presence umzusetzen. Zumal das ja wieder reines JS ist.
Ich schaue es mir am Wochenende nochmal an.
Dein Einsatz: Reagiere auf Person, wo greifst Du das ab? Und was machst Du dann damit?
Gruß Frank
-
Hallo Frank,
du kannst für Telegram statt den direkten Link (also Text) auch „Wert von Objekt-ID“ verwenden und suchst dir hier das entsprechende Objekt, das den Link enthält, aus.
Wert von Objekt-ID findest du im ersten Blockly-Menüpunkt oben Links.
Hab grad kein Zugriff und kann es nicht besser beschreiben:-)
VG
Thomas
Gesendet von iPhone mit Tapatalk
-
Hi Thomas,
sehr guter Tipp. "Wert von Objekt ID" habe ich dort eingesetzt bekommen und auch ein Bild erhalten.
Diesmal war es das aktuelle.
Drücke ich aber nach einiger Zeit wieder auf die Klingel, wird wieder das gleiche Bild gesendet.
:roll:
-
Hallo Frank,
ich habe mal nachgelesen https://dev.netatmo.com/en-US/resources … urity/live. Die URL ändert sich alle 3 Stunden. Insofern wäre es mal interessant, ob im Abstand von >3Stunden das richtige Bild angezeigt wird. Wenn dem so ist, dann ist meine Vermutung, dass hier im Telegram oder auf dem Handy selbst das Bild im Cache verbleibt und (wenn kein neuer Link übermittelt wird) das Bild nicht neu geladen wird sondern einfach das "alte" angezeigt wird. Vielleicht magst du das ja mal testen.
Kleiner Hinweis noch zum Blockly. Du brauchst nicht zwei mal den Telegram-Block. Im Blockly links unter Text (oder so ähnlich) gibt's es einen Baustein "Text erstellen aus" (oder so ähnlich). Diesen kannst du nutzen um Texte zusammenzufügen und in einem an Telegram zu senden.
-
Hi Thomas,
ich denke auch, dass es an Telegram liegt, dass das Bild nicht aktualisiert wird.
Wenn man priv jemanden ein Bild sendet, versendet Telegram es ja auch nur beim ersten "richtig".
Bei weiteren Personen erkennt Telegram es, dass man es schon gesendet hat und an hat sofort den "gesendet Status".
Fällt besonders bei meiner teils langsamen Handyverbindung auf.
Den Block, wie Du ihn beschreibst, hatte ich mal eingefügt und ausprobiert.
Aber dann wird kein Bild, sondern er reine Link als Text in die Nachricht kopiert.
Daher hatte ich es einzeln gemacht.
<xml xmlns="http://www.w3.org/1999/xhtml"><block type="on" id="]r@cDL(T)/9T}0Ri|=9#" x="-2912" y="-612"><field name="OID">hm-rpc.1.PEQ0653529.1.PRESS_SHORT</field> <field name="CONDITION">true</field> <statement name="STATEMENT"><block type="control" id="qA}S64(0(lNfd*^h#]Yh"><mutation delay_input="false"></mutation> <field name="OID">mihome.0.devices.gateway_7c49ebb17ef2.mid</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="math_number" id="s3VO47.[NPq_Yr)ONlX_"><field name="NUM">10</field></block></value> <next><block type="control" id="?)SSFf5(!P-XZtH*Js)6"><mutation delay_input="false"></mutation> <field name="OID">mihome.0.devices.gateway_7c49ebb17ef2.dimmer</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="math_number" id="JLDnp*U_0N9BNHg0I8gb"><field name="NUM">100</field></block></value> <next><block type="control" id="@UiJ!FNWZZNpV!1;yQxS"><mutation delay_input="false"></mutation> <field name="OID">mihome.0.devices.gateway_7c49ebb17ef2.rgb</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="text" id="Xj*DrC#fi71B_l`r``Ia"><field name="TEXT">#002BFF</field></block></value> <next><block type="control" id="BY0|vzr(~;D#Cjnwg;aB"><mutation delay_input="false"></mutation> <field name="OID">alexa2.0.Echo-Devices.G090LF0964330VQ6.Commands.speak</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="text" id="}BfhQZhY1vJ5VnUkZ6@@"><field name="TEXT">Es hat an der Haustüre geklingelt</field></block></value> <next><block type="control" id="SDLi*W!`r(%Nn~/.!CXe"><mutation delay_input="true"></mutation> <field name="OID">alexa2.0.Echo-Devices.G090LV037066068T.Commands.speak</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">3000</field> <field name="UNIT">ms</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"><block type="text" id="=oQfkbLgoXyh}u@(D.A9"><field name="TEXT">Es hat an der Haustüre geklingelt</field></block></value> <next><block type="control" id="c60X-qN38)ZAS{=uB2:?"><mutation delay_input="true"></mutation> <field name="OID">alexa2.0.Echo-Devices.G2A0QU06837206K8.Commands.speak</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">6000</field> <field name="UNIT">ms</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"><block type="text" id="wqIa~kmwG8D3}s%RDP~t"><field name="TEXT">Es hat an der Haustüre geklingelt</field></block></value> <next><block type="control" id="lYlXxx1IxG(DlTl_gCe^"><mutation delay_input="true"></mutation> <field name="OID">alexa2.0.Echo-Devices.G090LV03733600SK.Commands.speak</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">9000</field> <field name="UNIT">ms</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"><block type="text" id="pYTA}}9g8ibc{R?%{Fyr"><field name="TEXT">Es hat an der Haustüre geklingelt</field></block></value> <next><block type="control" id="jY5o[3rRj{1y1H[mHL~I"><mutation delay_input="true"></mutation> <field name="OID">mihome.0.devices.gateway_7c49ebb17ef2.mid</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">5</field> <field name="UNIT">sec</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"><block type="math_number" id="1Dom,.@X#)`K|;o^UF#U"><field name="NUM">10</field></block></value> <next><block type="control" id="``gp|Yh1pzI7CJs3Ar()"><mutation delay_input="true"></mutation> <field name="OID">mihome.0.devices.gateway_7c49ebb17ef2.dimmer</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">30</field> <field name="UNIT">sec</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"><block type="math_number" id="y]l;]!9ki8}ChQa?dIGu"><field name="NUM">0</field></block></value> <next><block type="telegram" id="d.9v=RP8OcROYpIZ)[c#"><field name="SILENT">FALSE</field> <field name="PARSEMODE">default</field> <value name="MESSAGE"><shadow type="text" id="Ke5/*Fn3Z~}+SQrKpaX;"><field name="TEXT"> Es hat an der Haustür geklingelt!</field></shadow></value> <next><block type="telegram" id="yB)40*7aLM[C9OjEl1q8"><field name="SILENT">FALSE</field> <field name="PARSEMODE">default</field> <value name="MESSAGE"><shadow type="text" id="j5V:VCj8zA]+Wu/a8{Kx"></shadow> <block type="get_value" id="7#Kv#[fE^D[KyfZz+uXi"><field name="ATTR">val</field> <field name="OID">netatmo.0.Wohnbereich.Lampe Eingang.live.picture</field></block></value></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></statement></block></xml>
Da Du ja ne Presence hast, kannst Du ja vielleicht ausprobieren, wie man es mit Java Kenntnis gelöst bekommt.
Eilt ja nicht.
LG Frank
-
Hi Frank,
ich kenne mich mit den Gegebenheiten von Telegram nicht so aus. Vielleicht sollte man das Bild aus dem Link vorher auf Platte schreiben und dann als Bild und nicht per Link via Telegram versenden. Ich schau mir das in den nächsten Tagen mal an.
Gruß
Thomas
-
Hallo Frank,
ich habe mal nachgelesen https://dev.netatmo.com/en-US/resources … urity/live. Die URL ändert sich alle 3 Stunden. Insofern wäre es mal interessant, ob im Abstand von >3Stunden das richtige Bild angezeigt wird. Wenn dem so ist, dann ist meine Vermutung, dass hier im Telegram oder auf dem Handy selbst das Bild im Cache verbleibt und (wenn kein neuer Link übermittelt wird) das Bild nicht neu geladen wird sondern einfach das "alte" angezeigt wird. Vielleicht magst du das ja mal testen. `
Du hattest Recht. Heute Mittag hat der Postbote geklingelt. Ein Bild kam.
Als ich gerade nach Hause kam habe ich geklingelt. Diesmal kam ein Bild von mir :lol:
Somit funktioniert das mit dem hinterlegten Objekt ansatt der URL.
Klingel ich allerdings erneut, kommt wieder das gleiche Bild. Muss dann wohl wieder 3 Stunden warten.
-
Also nur noch alle 3 Stunden klingeln. Das könnte man ja am Eingang vermerken :lol:
Ich denke damit liegt es an Telegram. Ich würde versuchen das Bild aus der URL in eine Datei auf dem ioBroker-Host zu schreiben und dieses dann per Telegram zu versenden. Also ähnlich wie hier in anderer Form schon umgesetzt: viewtopic.php?f=21&t=18739&hilit=kamera+telegram
Aber vielleicht hat ja noch jemand eine ganz andere Idee.
Gruß
Thomas
-
Hi
Das mit dem v7 oder v 11 lässt sich nicht ändern!!
du musst nur einen teil der URL nehmen
bei mir sieht sie so aus
http://192.xxx.xxx.xx(IP der Kamera)/835abfacdxxxxxxxxx (dert teil aus deiner URL)/live/files/poor/index.m3u8
! Hallo in die Runde,
! ich versuche mal zu schildern was ich bisher tun konnte. Vielleicht hilft es ja bei der ein oder anderen Fragestellung.
! Anlegen der APP unter https://dev.netatmo.com/myaccount/
! Client ID und Client Secret in den Netatmo-Adapter im IOBroker eintragen - Speichern - Adapter startet neu
! In den Objekten im IOBroker findet man nun die Livestream URL der Kamera für den externen Zugriff.
! Bsp.: https://v1.netatmo.net/restricted/xx.xx … <schlüssel 1="">/<schlüssel 2="">/live/index_local.m3u8 Diese funktionier bei mir zeitlich begrenzt im VLC-Player.
! Nun einfach (für den internen Zugriff - Achtung "http" nicht mehr "https") den Link für den Livestream wie folgt generieren:
! http://<lokale ip/der/kamera="">/<schlüssel 1="">/live/index_local.m3u8
! Alternativ für verschiedene Bandbreiten und Auflösungen statt "/live/index_local.m3u8" jeweils:
! /live/files/poor/index.m3u8 (Bandbreite=64000 - Auflösung 640x360)
! /live/files/low/index.m3u8 (Bandbreite=500000 - Auflösung 640x360)
! /live/files/medium/index.m3u8 (Bandbreite=1000000 - Auflösung 1280x720)
! /live/files/high/index.m3u8 (Bandbreite=3000000 - Auflösung 1920x1080)
! verwenden.
! Die jeweiligen Links funktionieren bei mir (bisher) ohne zeitliche Begrenzung.
! Ich hoffe ich konnte ein wenig helfen.
! Gruß
! Thomas</schlüssel></lokale></schlüssel></schlüssel>
aber lies mal hier!! -
Also nur noch alle 3 Stunden klingeln. Das könnte man ja am Eingang vermerken :lol:
Ich denke damit liegt es an Telegram. Ich würde versuchen das Bild aus der URL in eine Datei auf dem ioBroker-Host zu schreiben und dieses dann per Telegram zu versenden. Also ähnlich wie hier in anderer Form schon umgesetzt: viewtopic.php?f=21&t=18739&hilit=kamera+telegram
Aber vielleicht hat ja noch jemand eine ganz andere Idee. `
:lol:"Nur alle 3 Stunden klingeln" ist gut :mrgreen:
Ich werde mal schauen, ob ich es mit Blockly hinbekomme, die Bilddatei wegzuschreiben.
Gruss Frank
-
Ob das mit Blockly was werden kann bin ich gespannt. Kannst ja mal dein Ergebnis posten wenn du magst. Ich schau mal ob ich heute Abend Zeit finde. Die Idee find ich spannend. 8-)
VG
Thomas
-
Hi Thomas,
ich habe mir den Link von Deinem Beispiel mit dem wegschreiben mal angeschaut.
Aber ich verstehe nur Bahnhof und kann es leider nicht auf die Presence umsetzen.
LG Frank
-
Hi Frank,
ich habe mal dein Blockly importiert und das im Javascript nachgebildet. Dies kannst du einfach importieren und müsttest nur noch die ersten Angaben (Zeile 3 bis 5) auf deine Installation anpassen. Ich denke es ist soweit selbsterklärend.
Kannst ja mal versuchen ob es nun funktioniert. Hier im Script wird jetzt das Bild geholt, im Image-Verzeichnis (muss du vorher anlegen) zwischengespeichert, an Telegram gesendet und anschließend wieder gelöscht. Schau mal ob es bei dir funktioniert. Bei mir läuft es
Hab mich dabei an dem Script von @HoffmannOs unter viewtopic.php?f=21&t=18739&hilit=kamera … am#p195677 orientiert.
Grüße
Thomas
var fs = require('fs'); camerapicture = 'netatmo.0.Home.Presence.live.picture' ; // Objekt der Live camera picture URL imagepath = '/Image/' // Pfand zum Zwischenspeicher des Bildes - muss vorher angelegt sein message = 'Es hat an der Haustür geklingelt' // Nachrichtentext für Telegram on({id: "hm-rpc.1.PEQ0653529.1.PRESS_SHORT", val: true}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; setState("mihome.0.devices.gateway_7c49ebb17ef2.mid", 10); setState("mihome.0.devices.gateway_7c49ebb17ef2.dimmer", 100); setState("mihome.0.devices.gateway_7c49ebb17ef2.rgb", '#002BFF'); setState("alexa2.0.Echo-Devices.G090LF0964330VQ6.Commands.speak", 'Es hat an der Haustüre geklingelt'); setStateDelayed("alexa2.0.Echo-Devices.G090LV037066068T.Commands.speak", 'Es hat an der Haustüre geklingelt', 3000, false); setStateDelayed("alexa2.0.Echo-Devices.G2A0QU06837206K8.Commands.speak", 'Es hat an der Haustüre geklingelt', 6000, false); setStateDelayed("alexa2.0.Echo-Devices.G090LV03733600SK.Commands.speak", 'Es hat an der Haustüre geklingelt', 9000, false); setStateDelayed("mihome.0.devices.gateway_7c49ebb17ef2.mid", 10, 5000, false); setStateDelayed("mihome.0.devices.gateway_7c49ebb17ef2.dimmer", 0, 30000, false); getImage( obj ); }); // Bild aus Objekt camerapicture holen function getImage() { var fname = imagepath + Date.now() + '.jpg'; request.get({url: getState(camerapicture).val, encoding: 'binary'}, function (err, response, body) { fs.writeFile(fname, body, 'binary', function(err) { if (err) { log('Fehler beim Bild speichern: ' + err, 'warn'); } else { setTimeout(function() { sendImage(fname); }, 2000); } }); }); } // Bild über Telegram senden function sendImage (fname) { try { sendTo('telegram.0', { text: fname, caption: message, disable_notification: true }); } catch(err) { if (err.code != "ENOENT") log(err); } setTimeout(function() { deleteImage(fname); }, 3000); } // Bild löschen function deleteImage(fname) { try { // var stats = fs.statSync(path); try { fs.unlinkSync(fname); } catch(err) { if (err.code != "ENOENT") log(err); } } catch(err) { if (err.code != "ENOENT") log(err); } }
-
Hi Thomas,
ich habe mir den Link von Deinem Beispiel mit dem wegschreiben mal angeschaut.
Aber ich verstehe nur Bahnhof und kann es leider nicht auf die Presence umsetzen.
LG Frank `
Hi Frank,
konntest schon mal testen? Würde mich nur interessieren ob es bei dir funktioniert. Bei mir läufts und ich find die Idee cool 8-)
Danke nochmal dafür und schönes Wochenende
Gruß Thomas
-
Guten Morgen Thomas,
ich lag am Wochenende flach.
Wo muss ich das Verzeichnis anlegen?
Direkt im iobroker Verzeichnis?
Gruß Frank
-
Hi Frank,
ich hab das direkt in der root angelegt. Du kannst aber auch das vorhandene tmp Verzeichnis nutzen. Dann einfach imagepath = 'tmp' verwenden.
Gruß
Thomas
Gesendet von iPhone mit Tapatalk
-
Hi Thomas,
es funktioniert
Habe TMP genommen.
Leeren muss ich das jetzt nicht noch, oder? Die alten Bilder werden überschrieben!?
Vielen Dank für die Hilfe!
LG Frank
-
Hi Frank,
das ist prima. Jetzt weißt du immer wer klingelt
Leeren musst du nicht. Die Datei wird nach dem senden wieder gelöscht.
Ich nutze es auch, allerdings nur wenn die Presence eine Person erkennt. Coole Idee!
Grüße
Thomas
Gesendet von iPhone mit Tapatalk
-
Hi Thomas,
wo ist der Datenpunkt? Erkennung Person oder Auto?
LG Frank
-
imagepath = '/Image/' // Pfand zum Zwischenspeicher des Bildes - muss vorher angelegt sein
Was muss ich hier eintragen?
Vom Raspberry oder NAS das Image Verzeichnis?