Diese Beitrag ist von unsrem User "MagicSven", Danke dafür 👍️
So,
da ich Neugierig war wer denn da so immer zu uns ans Haus kommt und klingelt habe ich ein kleines Blockly + Text>Kommando gemacht,
welches mir per Telegram ein Bild schickt.
Parallel dazu kann ich auch mit einem Text in Telegram mir das aktuelle Bild der Kamera holen.
Ich weiß, es geht auch indem man direkt auf die Kamera zugreift, aber mir gefiel die Idee, dass wenn jemand klingelt ich dieses Bild bekomme.
Zusätzlich wird das Bild auf meinem VIS-Table im Flur angezeigt und an der Implementierung auf den LG TV bin ich gerade noch dran.

Als erstes muss ein Datenpunkt angelegt werden als switch. Diesen nenne ich "snap_front" Der wird nachher benötigt um das Script manuell starten zu können.
Dann legen wir uns ein Blockly-Script an, welches wir "Türklingel_IPcam" nennen.
Spoiler
<xml xmlns="http://www.w3.org/1999/xhtml">
<block type="procedures_defnoreturn" id="]q1^X7~]d8N|g+9z@rRZ" x="663" y="-62">
<field name="NAME">foto senden</field>
<comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
<statement name="STACK">
<block type="timeouts_settimeout" id="[e915Q36.[gZ7DC{#Aq7">
<field name="NAME">timeout</field>
<field name="DELAY">1000</field>
<field name="UNIT">ms</field>
<statement name="STATEMENT">
<block type="exec" id="mK:Ia`aNin?DUe+SmwwW">
<mutation with_statement="false"></mutation>
<field name="WITH_STATEMENT">FALSE</field>
<field name="LOG"></field>
<value name="COMMAND">
<shadow type="text" id="aA{+dh-g{@]+(ulme;3f">
<field name="TEXT">wget -O /opt/iobroker/ipcam/alarm.jpg 'http://www.eckerhof-hinterdorf.de/Bilder/webcam.jpg'</field>
</shadow>
</value>
<next>
<block type="timeouts_settimeout" id="}Af,dc#t1!b1/L1jBO;3">
<field name="NAME">timeout2</field>
<field name="DELAY">1000</field>
<field name="UNIT">ms</field>
<statement name="STATEMENT">
<block type="telegram" id="Nf0sMOt],eTCJ6z%iiBi">
<field name="INSTANCE"></field>
<field name="LOG"></field>
<field name="SILENT">FALSE</field>
<field name="PARSEMODE">default</field>
<value name="MESSAGE">
<shadow type="text" id="2jH+=#x8zjP|SxXkO{M(">
<field name="TEXT">/opt/iobroker/ipcam/alarm.jpg</field>
</shadow>
</value>
<value name="USERNAME">
<block type="text" id="_AFK(.gLC3+`A)6|-2J:">
<field name="TEXT">Sven</field>
</block>
</value>
</block>
</statement>
</block>
</next>
</block>
</statement>
</block>
</statement>
</block>
<block type="on_ext" id="R1Hu:;U_[0SPYYcBDSE#" x="38" y="38">
<mutation items="1"></mutation>
<field name="CONDITION">ne</field>
<field name="ACK_CONDITION"></field>
<value name="OID0">
<shadow type="field_oid" id="XBH47Lp7#p%a!=bMa3sz">
<field name="oid">#Variablen.0.Kamera.Klingel</field>
</shadow>
</value>
<statement name="STATEMENT">
<block type="controls_if" id="gb|w_%#tSQ%[cRUa=a52">
<value name="IF0">
<block type="logic_compare" id="P6*O{)L*;#y^E+TE`LxB">
<field name="OP">EQ</field>
<value name="A">
<block type="get_value" id="6h4NO9)rwCCxugQ~N-@a">
<field name="ATTR">val</field>
<field name="OID">#Variablen.0.Kamera.Klingel</field>
</block>
</value>
<value name="B">
<block type="logic_boolean" id="ekbG)4O|SSU}:+(/]hKz">
<field name="BOOL">TRUE</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="telegram" id="4#J_9L(R0]l2HaeFhM7J">
<field name="INSTANCE"></field>
<field name="LOG"></field>
<field name="SILENT">FALSE</field>
<field name="PARSEMODE">default</field>
<value name="MESSAGE">
<shadow type="text" id="f3H5vI{/#4X`bCu9}_d|">
<field name="TEXT">Bewegung erkannt!</field>
</shadow>
</value>
<value name="USERNAME">
<block type="text" id="5;Jp;v_^^GJrJi9@#tG@">
<field name="TEXT">Sven</field>
</block>
</value>
<next>
<block type="procedures_callnoreturn" id="gi.A.=Aqb,e5_}yXK#xc">
<mutation name="foto senden"></mutation>
<next>
<block type="control" id="P/qnJluqYkNuy{8:boR4">
<mutation delay_input="true"></mutation>
<field name="OID">javascript.0.scriptEnabled.kamera_scripte.tastatur_telegram</field>
<field name="WITH_DELAY">TRUE</field>
<field name="DELAY_MS">4000</field>
<field name="UNIT">ms</field>
<field name="CLEAR_RUNNING">FALSE</field>
<value name="VALUE">
<block type="logic_boolean" id="v{|c#2zgh];bqOTJu:Ne">
<field name="BOOL">TRUE</field>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</statement>
</block>
</statement>
<next>
<block type="on_ext" id="tJOe%s8O`mHvK)wr}!~v">
<mutation items="1"></mutation>
<field name="CONDITION">ne</field>
<field name="ACK_CONDITION"></field>
<value name="OID0">
<shadow type="field_oid" id="=Z}IpC9#wgGY@)rXj=.^">
<field name="oid">#Variablen.0.Kamera.snap_front</field>
</shadow>
</value>
<statement name="STATEMENT">
<block type="controls_if" id="2S6f~=WFX_%l9p]GcbuO">
<value name="IF0">
<block type="logic_compare" id="2WSnBM=_8wXE*?VObE~6">
<field name="OP">EQ</field>
<value name="A">
<block type="get_value" id="rW{%^[lB*kCJI-^R:w6_">
<field name="ATTR">val</field>
<field name="OID">#Variablen.0.Kamera.snap_front</field>
</block>
</value>
<value name="B">
<block type="logic_boolean" id="[VE34MJ|X/Qnb4?+B)t#">
<field name="BOOL">TRUE</field>
</block>
</value>
</block>
</value>
<statement name="DO0">
<block type="procedures_callnoreturn" id="Gc3^ZKC}OlV`2j4%w%5/">
<mutation name="foto senden"></mutation>
<next>
<block type="control" id="zgO:LmFhPPkhDMmp.dc#">
<mutation delay_input="false"></mutation>
<field name="OID">#Variablen.0.Kamera.snap_front</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE">
<block type="logic_boolean" id="Iz16M^_)23WuL/Z`TmgA">
<field name="BOOL">FALSE</field>
</block>
</value>
<next>
<block type="control" id="P,3yLv91x(F=OhzePq4m">
<mutation delay_input="false"></mutation>
<field name="OID">javascript.0.scriptEnabled.kamera_scripte.tastatur_telegram</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE">
<block type="logic_boolean" id="xrrxOUH098l;N[He8D76">
<field name="BOOL">FALSE</field>
</block>
</value>
<next>
<block type="control" id="ywO*:6gq):y?74DNU]5`">
<mutation delay_input="true"></mutation>
<field name="OID">javascript.0.scriptEnabled.kamera_scripte.tastatur_telegram</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="logic_boolean" id="*:ol@LSt8vNRb)WzzL*K">
<field name="BOOL">TRUE</field>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</statement>
</block>
</statement>
</block>
</next>
</block>
</xml>
Als nächstes brauchen wir noch ein weiteres Script, allerdings als Java.
Dieses nennen wir "tastatur_telegram"
sendTo('telegram.0', {
text: 'möchtest du mehr bilder?',
reply_markup: {
keyboard: [
['ja','nein'],
],
resize_keyboard: true,
one_time_keyboard: true
}
});
Zur Erklärung:
Wenn der Datenpunkt "Klingel" aktiv ist (wahr), gibt Telegram eine Nachricht "Bewegung erkannt"
Der Empfänger hier gibt an, dass nur ich diese Meldung bekomme (meine Frau will das nicht...)
Anschließend wird eine Funktion gestartet (foto senden).
Diese Funktion (rechts oben im Blockly) für einen Exec befehl aus und kopiert das Livebild der Kamera in den Ordner
/opt/iobroker/ipcam (ggfs. den Ordner noch anlegen).
Hier kann nicht direkt auf das Bild der Kamera zugegriffen werden, da dann der Versand an Telegram nicht funktioniert.
Wichtig: in der javascript Instanz muss "allow exec" aktiviert sein.
Im unteren Teil des Script´s erscheint eine Abfrage via Telegram, ob man weitere Bilder möchte.
Hierzu bitte in Text>Kommando folgendes eintragen:
Regel Trigger Wort Parameter Parameter2 Text
Schalte irgendwas an oder aus ja #Variablen.0.Kamera.snap_front true sende Bild...
Schalte irgendwas an oder aus nein javascript.0.scriptEnabled.kamera_scripte.tastatur _telegram false okay...
Schalte irgendwas an oder aus Kamera #Variablen.0.Kamera.snap_front true Bild wird übertragen...
Wird nun die Klingeltaste betätigt, kommt per Telegram erst die Nachricht "Bewegung erkannt"
im Hintergrund lädt er bereits das Bild herunter und sendet es.
Man kann sich auch in Telegram über den Befehl "Kamera" direkt das Bild holen.
Hierzu einfach das Wort "Kamera" schreiben.
Ich hoffe ich konnte es einigermaßen erklären und ihr könnt was mit dem Script anfangen.
Gruß Sven