Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Entwicklung
    4. [Neuer Adapter] Reolink Kamera

    NEWS

    • 15. 05. Wartungsarbeiten am ioBroker Forum

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    [Neuer Adapter] Reolink Kamera

    This topic has been deleted. Only users with topic management privileges can see it.
    • M
      mading @Ben1983 last edited by mading

      @ben1983 sagte in [Neuer Adapter] Reolink Kamera:

      @wendy2702 Mein Vorhaben ist im Einfachsten Sinne:

      Kamera auf Pool gerichtet. Wird eine Person erkannt (Nicht spezifisch, sondern einfach nur irgendeine Person),
      dann wäre es schön über den Adapter einen Datenpukt gesetzt zu bekommen.
      Geht das irgendwie?
      Und Optional Aufzeichnung über Netzwerk auf NAS.

      Was könnt ihr mir da Empfehlen?

      Mögliche Kameras hast du ja jetzt. Diese liefern einen entsprechenden Datenpunkt person_detected als bool. Du brauchst also für den Use Case ke8n frigate oä. Den DP kannst du zb via Blockly auswerten, und via rtsp ein Bild ziehen oder ein Video und entsprechend weiterverarbeiten. Ich schicke mir für meine Haustür bei Detection sofort ein Bild und nehme zusätzlich noch ein Video auf. Beides schicke ich mir per Telegram. Wenn du im reolink Adapter den Abfragezyklus auf 1 stelltst, klappt das gut mit sofortiger Benachrichtigung.

      Hier meine Blocklys (ich habe mir Funktionen für Bild/ Video geschrieben, die ich verwenden kann). Das Bild/ Video wird unter /opt/iobroker/… temp. gespeichert und nach Verwendung gelöscht. Den Ziel-Unterordner musst du anlegen.

      IMG_2390.jpeg

      
      Trigger Personenerkennung:
      
      <block xmlns="https://developers.google.com/blockly/xml" type="on" id="uuz$N*O37(GIt3L;|W,}" x="-1888" y="-128">
        <field name="OID">reolink.0.sensor.people.state</field>
        <field name="CONDITION">true</field>
        <field name="ACK_CONDITION"></field>
        <statement name="STATEMENT">
          <block type="controls_if" id="dF$sT|2X(V+]B`g3IQ8l">
            <value name="IF0">
              <block type="logic_compare" id="#Z$ww+GTV,y;~1k~a8)^">
                <field name="OP">GT</field>
                <value name="A">
                  <block type="math_arithmetic" id="LS:]$a.1mBO5=~n2;8xr">
                    <field name="OP">MINUS</field>
                    <value name="A">
                      <shadow type="math_number" id="lu!qJ9/RycKkMtPVDoyu">
                        <field name="NUM">1</field>
                      </shadow>
                      <block type="time_get" id=")D:qa2zsxK)]g]y)Yh)7">
                        <mutation xmlns="http://www.w3.org/1999/xhtml" format="false" language="false"></mutation>
                        <field name="OPTION">object</field>
                      </block>
                    </value>
                    <value name="B">
                      <shadow type="math_number" id="}duth#L-rZjmX9{VARn|">
                        <field name="NUM">1</field>
                      </shadow>
                      <block type="get_value" id=":bDq^SoFSvWOy3h19dge">
                        <field name="ATTR">val</field>
                        <field name="OID">0_userdata.0.EigeneDatenpunkte.Sicherheit.HaustuerLetzterAlarm</field>
                      </block>
                    </value>
                  </block>
                </value>
                <value name="B">
                  <block type="math_number" id="^D9d^X/PE(GSW3sa9%}`">
                    <field name="NUM">180000</field>
                  </block>
                </value>
              </block>
            </value>
            <statement name="DO0">
              <block type="telegram" id="2e}?TZmnO-$81$jl$5FH">
                <field name="INSTANCE"></field>
                <field name="LOG"></field>
                <field name="SILENT">FALSE</field>
                <field name="PARSEMODE">default</field>
                <field name="ESCAPING">FALSE</field>
                <field name="DISABLE_WEB_PAGE_PREVIEW">FALSE</field>
                <value name="MESSAGE">
                  <shadow type="text" id="Ay7o1YPRHx%^/vY]u:-?">
                    <field name="TEXT">Bewegung Haustuere erkannt!</field>
                  </shadow>
                  <block type="text" id="OTh(H#q:)PwET+Up{]-^">
                    <field name="TEXT">Bewegung Haustüre erkannt: Person/en</field>
                  </block>
                </value>
                <next>
                  <block type="debug" id="5rD}Pawz6])4pf^h`6k_">
                    <field name="Severity">info</field>
                    <value name="TEXT">
                      <shadow type="text" id="C1UVogP=14,aAc?{8w0{">
                        <field name="TEXT">-HausInfos- Bewegung an Haustüre erkannt!</field>
                      </shadow>
                      <block type="text_join" id="^$hbaQieBtOV+y2oA.Fe">
                        <mutation items="2"></mutation>
                        <value name="ADD0">
                          <block type="text" id="P,HXb+hM1zI()Ed)Sxo1">
                            <field name="TEXT">-HausInfos- Bewegung Haustüre erkannt: Person/en</field>
                          </block>
                        </value>
                      </block>
                    </value>
                    <next>
                      <block type="update" id=":%Z!4W+?#v`4v;ti#vH^">
                        <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
                        <field name="OID">0_userdata.0.EigeneDatenpunkte.Sicherheit.HaustuerLetzterAlarm</field>
                        <field name="WITH_DELAY">FALSE</field>
                        <value name="VALUE">
                          <block type="get_value" id="F^@,^WdCJ+g3)1Dn$DO_">
                            <field name="ATTR">ts</field>
                            <field name="OID">reolink.0.sensor.motion</field>
                          </block>
                        </value>
                        <next>
                          <block type="procedures_callnoreturn" id="p4lNhcd_%*NuGTeu0PG)">
                            <mutation name="HaustuerBilderSchicken"></mutation>
                            <next>
                              <block type="procedures_callnoreturn" id="@S~s;54ZH+uI%vHQMMY+">
                                <mutation name="HaustuereVideoSchicken"></mutation>
                              </block>
                            </next>
                          </block>
                        </next>
                      </block>
                    </next>
                  </block>
                </next>
              </block>
            </statement>
          </block>
        </statement>
      </block>
      
      

      Bild schicken:

      
      <block xmlns="https://developers.google.com/blockly/xml" type="procedures_defnoreturn" id="31W4)co*hfllBmNKD0j2" x="2713" y="-113">
        <field name="NAME">HaustuerBilderSchicken</field>
        <comment pinned="false" h="80" w="160">holt ein Bild vom der Cam und schickt es per Telegram</comment>
        <statement name="STACK">
          <block type="controls_if" id="A6cOkP*h,n}ZilH7=u]+">
            <mutation else="1"></mutation>
            <value name="IF0">
              <block type="get_value" id="2xz7D/{7Cr;$%oJ]Qkn-">
                <field name="ATTR">val</field>
                <field name="OID">reolink.0.network.connected</field>
              </block>
            </value>
            <statement name="DO0">
              <block type="comment" id="dUWhgD..@x7NToA81J~x">
                <field name="COMMENT">http://192.168.253.9:8085</field>
                <next>
                  <block type="http_get" id="P^;u4LBNv`?U^}YD(64+">
                    <field name="TIMEOUT">2000</field>
                    <field name="UNIT">ms</field>
                    <field name="TYPE">arraybuffer</field>
                    <value name="URL">
                      <shadow type="text" id="H]!+Lf(Nc%5_V~fo4v7O">
                        <field name="TEXT">http://192.168.253.148/cgi-bin/api.cgi?cmd=Snap&amp;channel=0&amp;rs=&amp;user=admin&amp;password=pw</field>
                      </shadow>
                    </value>
                    <statement name="STATEMENT">
                      <block type="telegram" id="r8,YW-hqOMW(=su_.DVb">
                        <field name="INSTANCE"></field>
                        <field name="LOG"></field>
                        <field name="SILENT">FALSE</field>
                        <field name="PARSEMODE">default</field>
                        <field name="ESCAPING">FALSE</field>
                        <field name="DISABLE_WEB_PAGE_PREVIEW">FALSE</field>
                        <value name="MESSAGE">
                          <shadow type="text" id="9eq;NDr4^eD/Qs0(3wN5">
                            <field name="TEXT">text</field>
                          </shadow>
                          <block type="http_response_tofile" id="!:Ngwi;@%%gZV,lT;T,x">
                            <value name="FILENAME">
                              <shadow type="text" id="tO6FZSDjDBqC[fXo`v+?">
                                <field name="TEXT">temp.jpg</field>
                              </shadow>
                            </value>
                          </block>
                        </value>
                      </block>
                    </statement>
                  </block>
                </next>
              </block>
            </statement>
            <statement name="ELSE">
              <block type="telegram" id="Ov9ho$a#M2b#*oVML:(|">
                <field name="INSTANCE"></field>
                <field name="LOG"></field>
                <field name="SILENT">FALSE</field>
                <field name="PARSEMODE">default</field>
                <field name="ESCAPING">FALSE</field>
                <field name="DISABLE_WEB_PAGE_PREVIEW">FALSE</field>
                <value name="MESSAGE">
                  <shadow type="text" id="]ynKN#t)%{I1c=V__Q(U">
                    <field name="TEXT">Kamera Haustüre nicht erreichbar!</field>
                  </shadow>
                </value>
              </block>
            </statement>
          </block>
        </statement>
      </block>
      
      

      Video schicken

      
      <block xmlns="https://developers.google.com/blockly/xml" type="procedures_defnoreturn" id=":u%-]}+:Oq#$%z.*G/X`" x="1897" y="-321">
        <field name="NAME">HaustuereVideoSchicken</field>
        <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
        <statement name="STACK">
          <block type="comment" id="=;Hz#?O{6CO(;J.tKZ}z">
            <field name="COMMENT">h264Preview_01_ext</field>
            <next>
              <block type="variables_set" id="CSw$Oh|zU}or7j|W4sSn">
                <field name="VAR" id="fJUJCIN5HrB8Akm?Xu?R">Befehl</field>
                <value name="VALUE">
                  <block type="text_join" id="D6.783^7hR8$?`tMsiG~">
                    <mutation items="3"></mutation>
                    <value name="ADD0">
                      <block type="text" id="GKb14HP_!Jd~d|6;SWTH">
                        <field name="TEXT">ffmpeg -y -i rtsp://admin:pw@192.168.253.148:554/h264Preview_01_main -t </field>
                      </block>
                    </value>
                    <value name="ADD1">
                      <block type="math_number" id="M_4$tL0mfoUN(A`|pHri">
                        <field name="NUM">30</field>
                      </block>
                    </value>
                    <value name="ADD2">
                      <block type="text" id="Wj-o%7;;v,y(I~6-t*bK">
                        <field name="TEXT"> -f mp4 -vcodec libx264 -pix_fmt yuv420p -an -vf scale=1024:768 -r 15 /opt/iobroker/CamSnapshots/Haustuere.mp4</field>
                      </block>
                    </value>
                  </block>
                </value>
                <next>
                  <block type="exec" id="]Mmgt=)}fsMT=2m/c0ub">
                    <mutation xmlns="http://www.w3.org/1999/xhtml" with_statement="true"></mutation>
                    <field name="WITH_STATEMENT">TRUE</field>
                    <field name="LOG"></field>
                    <value name="COMMAND">
                      <shadow type="text" id="e.P0Y4sWi?jQvW0Ikv9n">
                        <field name="TEXT">text</field>
                      </shadow>
                      <block type="variables_get" id="qF?QeOdsvtvtsgYP][Aq">
                        <field name="VAR" id="fJUJCIN5HrB8Akm?Xu?R">Befehl</field>
                      </block>
                    </value>
                    <statement name="STATEMENT">
                      <block type="telegram" id="Ch~%tXvQ*FvZheza+M.o">
                        <field name="INSTANCE"></field>
                        <field name="LOG"></field>
                        <field name="SILENT">FALSE</field>
                        <field name="PARSEMODE">default</field>
                        <field name="ESCAPING">FALSE</field>
                        <field name="DISABLE_WEB_PAGE_PREVIEW">FALSE</field>
                        <value name="MESSAGE">
                          <shadow type="text" id="`}*6Z.:`6}.?55h*`(Nb">
                            <field name="TEXT">/opt/iobroker/AlarmCam/ImouFlur.jpg</field>
                          </shadow>
                          <block type="text" id="Mp89tz^y0ft*:zf$N__P">
                            <field name="TEXT">/opt/iobroker/CamSnapshots/Haustuere.mp4</field>
                          </block>
                        </value>
                        <next>
                          <block type="timeouts_wait" id="gDyq4a]Em:EvTOg?ONqG">
                            <field name="DELAY">10</field>
                            <field name="UNIT">sec</field>
                            <next>
                              <block type="exec" id="N64}k!dt^P+9a7-86D//">
                                <mutation xmlns="http://www.w3.org/1999/xhtml" with_statement="false"></mutation>
                                <field name="WITH_STATEMENT">FALSE</field>
                                <field name="LOG"></field>
                                <value name="COMMAND">
                                  <shadow type="text" id="e.P0Y4sWi?jQvW0Ikv9n">
                                    <field name="TEXT">text</field>
                                  </shadow>
                                  <block type="text" id="^([ZI#zcti8E-p5%1bvt">
                                    <field name="TEXT">rm /opt/iobroker/CamSnapshots/Haustuere.mp4</field>
                                  </block>
                                </value>
                              </block>
                            </next>
                          </block>
                        </next>
                      </block>
                    </statement>
                  </block>
                </next>
              </block>
            </next>
          </block>
        </statement>
      </block>
      
      
      wendy2702 1 Reply Last reply Reply Quote 1
      • wendy2702
        wendy2702 @mading last edited by

        @mading kannst du mir mal zeigen wie du die Bewegungserkennung in der Kamera eingestellt hast.

        M 1 Reply Last reply Reply Quote 0
        • M
          mading @wendy2702 last edited by mading

          @wendy2702 sagte in [Neuer Adapter] Reolink Kamera:

          @mading kannst du mir mal zeigen wie du die Bewegungserkennung in der Kamera eingestellt hast.

          z.B. über das Web Interface kannst du unter Alarm Settings ein paar Einstellungen durchführen (in welchem Zeitraum etc.).

          d82eb7b2-5de3-4f77-893d-f6c040c0259f-grafik.png

          c69cca23-ed4a-441c-a135-8a80e16fa938-grafik.png

          Ich habe die Erkennung so eingestellt, dass keine vorbei fahrenden Fahrzeuge auf der Kreisstrasse triggern

          bea45429-ea13-4f5b-b108-29f773e1f96d-grafik.png

          1 Reply Last reply Reply Quote 1
          • D
            Dominic151617 last edited by

            Hallo zusammen, Ich bräuchte mal nen Tipp. Ich versuche grad das Bild einer Kamera per Telegram zu verschicken. Da http-get am Certifikat scheitert, dachte ich mir ich nutze die eingebaute Funktion des Adapters.

            sendTo("reolink.0",{action: "snap"}, function(result){
                sendTo("telegram.0",{text:result});
            });
            

            Leider scheint Telegram das aber nicht als Bild zu erkennen.

            sendTo("reolink.0",{action: "snap"}, function(result){
                const buffer =Buffer.from(result.base64, "base64");
                sendTo("telegram.0",{text:buffer});
            });
            

            die Fehler sind Wahlweise

            	Failed sending [chatId - 995414256]: Error: ETELEGRAM: 413 Request Entity Too Large
            	Failed sending [chatId - 995414256]: Error: ETELEGRAM: 400 Bad Request: message text is empty
            

            Hat jemand nen Tipp?

            wendy2702 1 Reply Last reply Reply Quote 0
            • wendy2702
              wendy2702 @Dominic151617 last edited by

              @dominic151617 warum nicht das fertige Blockly von z.B. hier nutzen:

              https://forum.iobroker.net/post/1267946

              D 1 Reply Last reply Reply Quote 0
              • D
                Dominic151617 @wendy2702 last edited by

                @wendy2702 Dank für die schnelle Antwort. Das war auch mein Startpunkt. Leider bekomme ich da den Fehler

                script.js.Kamera.Reolink_Haustür: httpGet(url=http://192.168.178.123/cgi-bin/api.cgi?cmd=Snap&channel=0&rs=&user=admin&password=geheim, error=self-signed certificate)
                

                Darüber ist @Ringo-66 auch schon weiter oben gestolpert. Leider konnte ich im weiteren Verlauf keine Lösung dafür finden. Daher habe ich einen anderen Ansatz gewählt. Ansicht macht es ja auch wengig sinn, das Bild erst auf die Platte zu schreiben und dann wieder einzulesen.

                wendy2702 oelison 2 Replies Last reply Reply Quote 0
                • wendy2702
                  wendy2702 @Dominic151617 last edited by

                  @dominic151617 hast du denn „http“ in der Kamera aktiv?

                  1 Reply Last reply Reply Quote 0
                  • oelison
                    oelison @Dominic151617 last edited by oelison

                    @dominic151617 Probier ersteinmal wie telegram das Bild haben will:

                    sendTo("telegram.0",{file:{type:"image/png",base64:"iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACmSURBVFhH7ZdhCoAgDEZnd9D737T8xJkNNY1Ef+yB2LTcC1qWOT20kCBgjIkh0WwfmeuIxyGYnRzIPElgFSqgAvsKOOdCzeZ1y7EcZzDG16HvwtckihLdA4xxk3HeGGttc17Cc+lN6Ds/dlO6w6/ItQHn7H4GcDK3Em/zNboE5KKjcQstQxVQARVYLlDdC2YzvBfMQgVUYB8BlMWfn2E1ZJ7Fv+dEF0UZoNhXp9NnAAAAAElFTkSuQmCC"}});
                    

                    oder

                    sendTo("telegram.0",{file:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACmSURBVFhH7ZdhCoAgDEZnd9D737T8xJkNNY1Ef+yB2LTcC1qWOT20kCBgjIkh0WwfmeuIxyGYnRzIPElgFSqgAvsKOOdCzeZ1y7EcZzDG16HvwtckihLdA4xxk3HeGGttc17Cc+lN6Ds/dlO6w6/ItQHn7H4GcDK3Em/zNboE5KKjcQstQxVQARVYLlDdC2YzvBfMQgVUYB8BlMWfn2E1ZJ7Fv+dEF0UZoNhXp9NnAAAAAElFTkSuQmCC"});
                    

                    Im Reolink adapter ist auch ein Beispiel für Matrix (Synapse, Elements)

                    sendTo("reolink.0",{action: "snap"}, function(result){
                        sendTo("matrix-org.0",{file:result});
                    });
                    
                    1 Reply Last reply Reply Quote 0
                    • D
                      Dominic151617 last edited by

                      @wendy2702 🤦‍♂️ ich glaube da habe ich vergessen auf speichern zu klicken. Leider stolpere ich damit in den nächsten Fehler. Ich bekomme nur den Pfad und nicht das Bild. Wenn ich Terminal schaue, ist die Datei aber vorhanden. Ich lege das Thema für heute erstmal zur Seite. Besten Dank schon mal.

                      1 Reply Last reply Reply Quote 0
                      • D
                        Dominic151617 last edited by

                        So, hab es jetzt doch hinbekommen. Danke noch mal an @wendy2702 und @oelison. Ich spar mir mal, über welche Fehlversuche ich zur Löung gekommen bin. Im Endefekt muss der Buffer als

                        {"type":"Buffer","data":[255,216,255,219,0,132,0,10,7,7,8,7 (hier fehlt ne Menge)]}
                        

                        vorliegen. Was jetzt funktioniert ist:

                          sendTo("reolink.0",{action: "snap"}, function(result){
                            const buffer =Buffer.from(result.base64, "base64");
                            sendTo('telegram.0', {
                                        text: buffer,
                                        type: "photo",
                                        caption: 'A wonderful adapter'
                                    });
                          });
                        
                        oelison 1 Reply Last reply Reply Quote 1
                        • Ben1983
                          Ben1983 @Gonzokalle last edited by Ben1983

                          @gonzokalle Hi. Habe die CX810 nun hier. Auch in der APP, aber komme mit dem Adapter nicht online, bzw. der link auf github zur API, macht bei mir nichts. muss ich noch was beachten?

                          Edit: Habe es schon gefunden und in der APP https aktiviert.

                          1 Reply Last reply Reply Quote 0
                          • oelison
                            oelison @Dominic151617 last edited by

                            @dominic151617 Danke. Ich habe das jetzt auch in die Readme.md kopiert.

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

                            Support us

                            ioBroker
                            Community Adapters
                            Donate

                            804
                            Online

                            31.6k
                            Users

                            79.4k
                            Topics

                            1.3m
                            Posts

                            kamera neuer adapter reolink testen
                            151
                            999
                            245960
                            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