Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Ein Blockly für Reolink Snapshot zu Telegram

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Ein Blockly für Reolink Snapshot zu Telegram

    This topic has been deleted. Only users with topic management privileges can see it.
    • J
      jm3west last edited by jm3west

      Hallo ioBroker Community,

      nachdem ich schon so viel geholfen bekommen habe, wollte ich mal etwas zurückgeben.
      Das hat jetzt nix mit Weihnachten zu tun 🎁

      Es hat sich Zeitlich so ergeben.

      Ich muss erwähnen dass ich kein Erfahrener/Professioneller Programmierer bin. Das ist ein reines Hobby!
      Da wo ein Professioneller Programmierer 15 Minuten brauch, sitze ich schon mal 2-3 Tage dran.
      Bin da aber wie ein Bullterrier.

      Unter Mitwirkung/Hilfe von @paul53, @SBorg und vielleicht auch @crunchip der denkt ich sei ein Schlimmer Mensch (Vielleicht ist er wegen dem ganzen Corona sehr sensibilisiert)

      Dieses Blockly ist für eine Reolink Cam. In meinem Fall "Reolink RLC-811A"

      1.png
      2.png
      3.png
      4.png
      5.png
      6.png

      Selbstverständlich kann/soll über das Script gesprochen werden!
      Ich will ja noch was lernen.

      Aber so wie es hier zu sehen ist läuft das Script so wie ich es mir vorstellte.

      So jetzt ist aber Gut, sonst fange ich noch an zu weinen 🙂

      OK, @Jey-Cee
      Ohje, mein erstes Handbuch für ein Script. Neeeeeeeein Spass

      OK, beim Start vom Script ist der Link von der Reokink-API der mittels Crontab, jede Sekunde, die URL aktualisiert wird.
      Da dass Ergebniss des Links in JSON ausgegeben wird muss dass Ergebniss mit einem System > Attribut-Block in einen zuvor erstellten Datenpunkt (Number) geschrieben werden.

      0 = keine Bewegung, 1 = Bewegung erkannt

      Der weitere Ablauf des Script ...
      Wird eine Bewegung erkannt wird im exec-Block der Bedingung "wert=1" nach dem soeben/letzten erstellten Snapshot gesucht und vom ioBroker-Host mittels "scp" vom FTP-Server in ein lokales Verzeichnis (Bei mir /tmp/UeCAMS/nameVonKamerastandort) abgespeichert.

      Da der Snapshot im meinem Fall ein 4K Bild ist würde das Script viel zu schnell ablaufen und beim versandt an Telegram ein unvollständiges Bild vorliegen würde.
      Eine lange Pause oder verzögertes starten wollte ich nicht. Denn was bringt eine Warnung die erst 15-20 Sekunden später bei Telegram eintrifft.
      Um den downgeloadeten Snapshot zu verkleinern muss am ioBroker-Host das Paket "imagemagick" mit apt install -y imagemagick installiert werden.

      Wenn der versandt an Telegram erfolgreich war werden zu guter letzt die Bilder wieder lokal am ioBroker-Host gelöscht.

      Ich hoffe das hat irgend jemand verstanden 🙂

      DasIstDasScript.xml

      Jey Cee crunchip SBorg 4 Replies Last reply Reply Quote 2
      • Jey Cee
        Jey Cee Developer @jm3west last edited by

        @jm3west schön das du etwas zurück gibst. Es wäre auch schön wenn du einen Titel der zur Funktion deines Blocklys passt vergibst. Wenn es von der länge passt mit [Vorlage] drin und als Tag(Schlagwort) Vorlage.

        Dann wäre auch noch eine Kurze Beschreibungg was das Blockly macht ne tolle sache. Und zu guter letzt könntest du noch einen Export deines Blockys zur Verfügung stellen um es anderen leichter zu machen.

        1 Reply Last reply Reply Quote 2
        • crunchip
          crunchip Forum Testing Most Active @jm3west last edited by

          @jm3west sagte in Ich wollte mal etwas zurückgeben:

          der denkt ich sei ein Schlimmer Mensch (Vielleicht ist er wegen dem ganzen Corona sehr sensibilisiert)

          nicht wirklich, Grundsätzlich habe ich keine Vorurteile, ausserdem kennen wir uns ja nicht persönlich😜

          1 Reply Last reply Reply Quote 1
          • SBorg
            SBorg Forum Testing Most Active @jm3west last edited by

            @jm3west sagte in Ein Blockly für Reolink Snapshot zu Telegram:

            Ich muss erwähnen dass ich kein Erfahrener/Professioneller Programmierer bin. Das ist ein reines Hobby!
            Da wo ein Professioneller Programmierer 15 Minuten brauch, sitze ich schon mal 2-3 Tage dran.
            Bin da aber wie ein Bullterrier.

            ...und dafür schon mal ein 👍
            Auch hier gilt "Übung macht den Meister", denn wohl für die meisten ist es Hobby und echte Programmierer dürften auch dünn gesät sein.
            ...und die erfahrenen sind auch nicht morgens aus dem Bett gefallen und konnten plötzlich programmieren.

            1 Reply Last reply Reply Quote 1
            • crunchip
              crunchip Forum Testing Most Active @jm3west last edited by

              @jm3west sagte in Ein Blockly für Reolink Snapshot zu Telegram:

              OK, beim Start vom Script ist der Link von der Reokink-API der mittels Crontab, jede Sekunde, die URL aktualisiert wird.
              Da dass Ergebniss des Links in JSON ausgegeben wird muss dass Ergebniss mit einem System > Attribut-Block in einen zuvor erstellten Datenpunkt (Number) geschrieben werden.
              0 = keine Bewegung, 1 = Bewegung erkannt

              denke das machst du, weil du motioneye nicht richtig zum laufen bekommst

              @jm3west sagte in Ein Blockly für Reolink Snapshot zu Telegram:

              Der weitere Ablauf des Script ...
              Wird eine Bewegung erkannt wird im exec-Block der Bedingung "wert=1" nach dem soeben/letzten erstellten Snapshot gesucht und vom ioBroker-Host mittels "scp" vom FTP-Server in ein lokales Verzeichnis (Bei mir /tmp/UeCAMS/nameVonKamerastandort) abgespeichert.

              wäre es da nicht möglich einen exec Befehl auszuführen, der einen aktuellen snap direkt von der cam verschickt? z.b so https://forum.iobroker.net/post/624431
              (weis nicht ob die cam 2 Auflösungs- Url's unterstützt)

              1 Reply Last reply Reply Quote 0
              • J
                jm3west last edited by jm3west

                @crunchip sagte in Ein Blockly für Reolink Snapshot zu Telegram:

                denke das machst du, weil du motioneye nicht richtig zum laufen bekommst

                Von Motioneye nehme ich nur das Livebild um in VIS zu integrieren

                @crunchip sagte in Ein Blockly für Reolink Snapshot zu Telegram:

                wäre es da nicht möglich einen exec Befehl auszuführen, der einen aktuellen snap direkt von der cam verschickt? z.b so https://forum.iobroker.net/post/624431
                (weis nicht ob die cam 2 Auflösungs- Url's unterstützt)

                Ne, leider nicht!
                Der Snapshot liegt nur im rtsp-Protokol vor.
                Wobei ich gar nicht weiß ob Telegram das versteht

                crunchip 1 Reply Last reply Reply Quote 0
                • crunchip
                  crunchip Forum Testing Most Active @jm3west last edited by

                  @jm3west laut deiner Api von oben, steht doch

                  Snap URL:
                  http://​(ip address)​/cgi-bin/api.cgi?cmd=Snap&channel=0&rs=​(any combination of
                  numbers and letters)​&user=​(user name)​&password=​(user password)
                  

                  wobei ich mir vorstellen könnte, channel=0 ist volle Auflösung, channel=1 ist kleinere Auflösung, zumindest kenne ich das so von meinen cams

                  J 1 Reply Last reply Reply Quote 0
                  • J
                    jm3west @crunchip last edited by jm3west

                    @crunchip das result von dem Link ist aber JSON mit Wert 0 und 1. Also nur die Info das eine Bewegung statt fand

                    Ich muss den Snap vom FTP server ziehen

                    crunchip 1 Reply Last reply Reply Quote 0
                    • crunchip
                      crunchip Forum Testing Most Active @jm3west last edited by

                      @jm3west sagte in Ein Blockly für Reolink Snapshot zu Telegram:

                      das result von dem Link ist aber JSON mit Wert 0 und 1. Also nur die Info das eine Bewegung statt fand

                      ich dachte, wenn du den Link im Browser eingbst, zeigt es das aktuelle Bild

                      http://192.168.2.119/cgi-bin/api.cgi?cmd=Snap&channel=0&rs=wuuPhkmUCeI9WG
                      7C&user=admin&password=123456
                      
                      Solas 1 Reply Last reply Reply Quote 0
                      • Solas
                        Solas @crunchip last edited by

                        Hallo,
                        dass bild wird bei mir auf dem Rechner vom IObroker abgelegt.
                        Ich hole das Bild mit wget lege es in einem Ordner meiner Wahl ab gebe ihm einen Namen (hier jetzt snapHof für die Kamera im Hof).

                        wget -O /opt/iobroker/snapHof.jpg "http://192.168.10.119/cgi-bin/api.cgi?cmd=Snap&channel=0&rs=wuuPhkmUCeI9WG7C&user=user&password=password"

                        Danach wird diese Datei mit Telegram gesendet. Da die Datei immer den selben Namen hat, wird sie immer überschrieben, spart mir das löschen.

                        Bildschirmfoto 2021-12-29 um 13.52.31.png

                        Das mit dem Bild funktioniert so weit ganz gut.
                        Da ich MotionEye nicht laufen lasse aus gründen der Systemressourcen finde ich deinen Ansatz gar nicht so übel...

                        Nur das mit der Bewegungserkennung habe ich nicht ganz so hinbekommen. Eventuell sieht ja jemand den Fehler...
                        Bildschirmfoto 2021-12-29 um 14.05.09.png

                        J 1 Reply Last reply Reply Quote 0
                        • J
                          jm3west @Solas last edited by

                          @georg-nürnberger hast Du mal versucht den timeout-Block zu verlängern.
                          Das könnte genau dass sein was ich beschrieben habe das der Download noch nicht fertig ist und beim Versand mit Telegram noch gar kein Bild vorliegt.

                          Selbst wenn es nur 1/1000 ist

                          Solas 1 Reply Last reply Reply Quote 0
                          • Solas
                            Solas @jm3west last edited by Solas

                            @jm3west
                            Danke für die Schnelle Antwort,
                            Die Verlängerung habe ich genau deshalb drinnen. Habe eine Kamera die mir ein Video sendet und da geht es nicht ohne. Man bekommt ein Pixelvideo. Habe es jetzt nicht mit einer kleineren Zeit Probiert.

                            So dachte ich...bis eben. Doch wenn man wie weiter oben drauf hingewiesen wurde, exec mit Ergebnissen ausführt, get es ohne.

                            Mein Fehler habe ich jetzt gefunden...
                            Wenn mann Statt value valve schreibt kann es nicht gehen...

                            Danke...

                            Nachtrag:
                            Also der Hinweis mit der Entfernung der Zeit ist Top (Danke auch hierfür).

                            Hier meine Lösung.
                            IP, User, Password, Speicherplatz und Name sowie TelegramUser sind persönlich anzupassen...


                            <xml xmlns="https://developers.google.com/blockly/xml">
                            <variables>
                            <variable id="t~1a+M$ufxHytFYbLix">result</variable> </variables> <block type="schedule" id="/G2._fir(/HCp~;8C^h" x="63" y="88">
                            <field name="SCHEDULE">* * * * * </field>
                            <statement name="STATEMENT">
                            <block type="request" id="J$Ccc9Oyhv{O]SPxt8-^">
                            <mutation xmlns="http://www.w3.org/1999/xhtml" with_statement="true"></mutation>
                            <field name="WITH_STATEMENT">TRUE</field>
                            <field name="LOG"></field>
                            <value name="URL">
                            <shadow type="text" id="{$gOvri2Vjn[]QYsv_^?">
                            <field name="TEXT">text</field>
                            </shadow>
                            <block type="text" id="Y]}hSK@5{nHD-z)P$RsF">
                            <field name="TEXT">http://192.168.10.119/api.cgi?cmd=GetMdState&user=admin&password=Password</field>
                            </block>
                            </value>
                            <statement name="STATEMENT">
                            <block type="update" id="!X:YYc/g_)hlCv0c^0S,">
                            <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                            <field name="OID">script.js.common.Bewegung_Hof</field>
                            <field name="WITH_DELAY">FALSE</field>
                            <value name="VALUE">
                            <block type="get_attr" id="4M6|A47a(LKbK,hxbq4E">
                            <value name="PATH">
                            <shadow type="text" id="KQ=cI$61M/O0
                            2*I,?#A">
                            <field name="TEXT">0.value.state</field>
                            </shadow>
                            </value>
                            <value name="OBJECT">
                            <block type="convert_json2object" id="Z(~fHSB:I/Q?u}gEj0^6">
                            <value name="VALUE">
                            <block type="variables_get" id="-hhj5g)J~^{~1kR;iCH"> <field name="VAR" id="t~1a+M$ufxHytFYbLix">result</field>
                            </block>
                            </value>
                            </block>
                            </value>
                            </block>
                            </value>
                            </block>
                            </statement>
                            </block>
                            </statement>
                            </block>
                            <block type="on_ext" id="bh;RWJ^pAMNwZ/!Qunq!" x="67" y="369">
                            <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation>
                            <field name="CONDITION">gt</field>
                            <field name="ACK_CONDITION"></field>
                            <value name="OID0">
                            <shadow type="field_oid" id="8X~TRdg;w@PYaYs2d-Av">
                            <field name="oid">default</field>
                            </shadow>
                            <block type="field_oid" id="whfxX(^7As[TAo6525">
                            <field name="oid">script.js.common.Bewegung_Hof</field>
                            </block>
                            </value>
                            <statement name="STATEMENT">
                            <block type="exec" id="pVcwF+4lwdt{nF[sT|CJ">
                            <mutation xmlns="http://www.w3.org/1999/xhtml" with_statement="true"></mutation>
                            <field name="WITH_STATEMENT">TRUE</field>
                            <field name="LOG"></field>
                            <comment pinned="false" h="80" w="160">rtsp://username:password@192.168.10.112/12 /11 1080p /12 360p /13 240p</comment>
                            <value name="COMMAND">
                            <shadow type="text" id="aJc!.(=M$0a)Iw-Sqp|P">
                            <field name="TEXT">ffmpeg -i http://192.168.10.121/cgi-bin/api.cgi?cmd=Snap&channel=0&rs=wuuPhkmUCeI9WG7C&user=admin&password=Password /opt/iobroker/GehwegCam.jepeg</field>
                            </shadow>
                            <block type="text" id="kiqUKh/:BAeEn,PXG8Y"> <field name="TEXT">wget -O /opt/iobroker/snapHof.jpg "http://192.168.10.119/cgi-bin/api.cgi?cmd=Snap&amp;channel=0&amp;rs=wuuPhkmUCeI9WG7C&amp;user=admin&amp;password=Password"</field> </block> </value> <statement name="STATEMENT"> <block type="telegram" id="/$.WMDc}ztQtM6[WZC(p"> <field name="INSTANCE">.0</field> <field name="LOG"></field> <field name="SILENT">FALSE</field> <field name="PARSEMODE">default</field> <value name="MESSAGE"> <shadow type="text" id=":,J8(4fJ@7jj8^yP?(j">
                            <field name="TEXT">/opt/iobroker/snapHof.jpg</field>
                            </shadow>
                            </value>
                            <value name="USERNAME">
                            <block type="text" id="[q)=?S/a1/ncUJX~gXx]">
                            <field name="TEXT">Georg</field>
                            </block>
                            </value>
                            </block>
                            </statement>
                            <next>
                            <block type="timeouts_wait" id="nLBlK`eV:%{UzHIg%XBf">
                            <field name="DELAY">10</field>
                            <field name="UNIT">sec</field>
                            </block>
                            </next>
                            </block>
                            </statement>
                            </block>
                            </xml></xml>

                            1 Reply Last reply Reply Quote 0
                            • j h
                              j h last edited by

                              Ich hab das Gefühl dass die API auch reagiert wenn Bewegungen in Sperrzonen erkannt wurden??
                              Kennt jemand die richtige API oder eine offizielle API Beschreibung?

                              Gruß

                              1 Reply Last reply Reply Quote 0
                              • First post
                                Last post

                              Support us

                              ioBroker
                              Community Adapters
                              Donate

                              1.2k
                              Online

                              31.7k
                              Users

                              79.7k
                              Topics

                              1.3m
                              Posts

                              6
                              13
                              1605
                              Loading More Posts
                              • Oldest to Newest
                              • Newest to Oldest
                              • Most Votes
                              Reply
                              • Reply as topic
                              Log in to reply
                              Community
                              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                              The ioBroker Community 2014-2023
                              logo