Ankündigung

Einklappen
Keine Ankündigung bisher.

Edomi und Synology oder Hikvision (2042) .. wer hat da was ?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Edomi und Synology oder Hikvision (2042) .. wer hat da was ?

    Hallo Leute,

    ich würde gern mit Edomi meine Synology steuern (hüstl).. steuern ist jetzt übertrieben.. da gibts ja nicht viel zu machen..
    Aber ich hab an der Surveillance Station zwei Kameras hängen... und jetzt würde ich gern einen Alarm bzw. eine Aufnahme
    triggern, wenn jemand am Bewegungsmelder vorbei latscht..

    Ansatz eins wäre über die Hikvision das zu triggern.. leider geht das nicht mit einem einfachen Aufruf einer URL..
    Da geht es dann los, mit Authentifizierung usw... und damit bin ich überfordert...

    Ansatz zwei wäre über die Synology SS... aber auch hier muss man sich Authentifizieren..
    was ich jetzt schon rausgefunden hab, wenn man folgende URL aufruft:

    http://IP:5000/webapi/auth.cgi?api=S...ion&format=sid

    bekommt man so eine Antwort:

    {"data":{"sid":"D45Dymiysx8WQB3J4N01003"},"success ":true}
    Mit dieser Antwort (SID) kann man dann so einiges Steuern.. da gibts ne Doku... leider hab ich keine Ahnung wie ich das in einen LBS bringen soll... hat da von euch jemand schon was vorbereitet, oder einen LBS den man evlt. für so etwas anpassen kann ??
    Gruß Martin
    Die Selbsthilfegruppe "UTF-8-Probleme" trifft sich diesmal abweichend im groüen Saal.

    #2
    noch was gefunden.. das sieht schon mal ganz gut aus:

    http://www.dbuschke.de/blog/synology...-deaktivieren/

    nur sollte hier statt die Cam zu aktivieren/deaktivieren eher der Alarm getriggert werden...

    kann man aus dem Skript (siehe Link) ein LBS basteln ??
    Die Selbsthilfegruppe "UTF-8-Probleme" trifft sich diesmal abweichend im groüen Saal.

    Kommentar


      #3
      Hallo ich hatte bereits mit nils Kontakt, der den LBS Hikvision als Bewegungsmelder für den HS gemacht hat.

      https://knx-user-forum.de/forum/öffentlicher-bereich/knx-eib-forum/965835-logikbaustein-hikvisionkameras-als-bewegungsmelder#post965835

      Er hat mir den Code zur Verfügung gestellt allerdings bin ich nicht in der Lage das in PHP umzusetzen Den Code kann ich gerne weitergeben wenn Interesse besteht (Nils hat damals schon bestätigt, dass ich den weitergeben darf)

      Kommentar


        #4
        Hi Simone.. ich hab zumindest schon mal die Befehle gefunden die Aufnahmen zu starten bzw. zu beenden.. das sollte eigentlich erst mal reichen..

        Leider kann ich mit dem Code auch nicht viel anfangen.. glaub ich.. aber wenn du den mal zur Verfügung stellst.. vielleicht findet sich da ja jemand..
        so schwer kann das glaub ich nicht sein...

        Gruß Martin
        Die Selbsthilfegruppe "UTF-8-Probleme" trifft sich diesmal abweichend im groüen Saal.

        Kommentar


          #5
          ha.. Seh gerade.. der Baustein geht genau in die falsche Richtung.. ich will von der Cam nicht wissen, wann sie eine Bewegung (Line Crossing oder ähnliches) erkennt.. sondern ich will ihr bzw. eigentlich eher der Synology S-Station eine Bewegung bzw. ein Event vorgeben..

          Heißt ich will das Triggern (von einem echten Bewegungsmelder aus)...
          Die Selbsthilfegruppe "UTF-8-Probleme" trifft sich diesmal abweichend im groüen Saal.

          Kommentar


            #6
            Das php script aus deinem 2.Post ist ja schon fast der LBS...

            Kommentar


              #7
              kann man das so hernehmen ??

              wie gesagt .. ich kenn mich damit leider Null aus...

              kaputt kann man ja nichts machen, oder ??

              Die Selbsthilfegruppe "UTF-8-Probleme" trifft sich diesmal abweichend im groüen Saal.

              Kommentar


                #8
                Nicht ganz, aber die Anmeldung und die Befehle. Der Rest Drumherum sollte dann kein Hexenwerk sein.

                Kommentar


                  #9
                  ok.. hab mir das mal angeschaut... NEIN... ich kapier es nicht

                  hier noch mal ein noch besseres php Skript:
                  https://knx-user-forum.de/forum/%C3%...bindung-an-knx

                  das mit dem Event Triggern ist fast noch besser.. weil ich dann in er Synology sagen kann, was er machen soll..

                  Gruß Martin

                  Die Selbsthilfegruppe "UTF-8-Probleme" trifft sich diesmal abweichend im groüen Saal.

                  Kommentar


                    #10
                    Ich hab jetzt mal ganz dumm einen LBS genommen und das mal angepasst und reinkopiert.. Das kann so noch nicht funktionieren, da ich irgendwie die Eingänge noch
                    an die Variablen verknüpfen muss...

                    Code:
                    ###[DEF]###
                    [name        =SStation Trigger            ]
                    
                    [e#1    TRIGGER           = Send Trigger         ]
                    [e#2    IP         = IP #init=192.168.178.41  ]
                    [e#3    Port         = Port #init=5000  ]
                    [e#4    Account         = Account #init=Admin  ]
                    [e#5    Password         = Password #init=''  ]
                    [e#6    EvtID         = EvtID #init=1  ]
                    
                    [a#1        =nix                ]
                    
                    
                    
                    [v#100    = 1.0 ]
                    [v#101    = 19000007 ]
                    [v#102    = SStation Trigger ]
                    [v#103    = 0 ] 
                    
                    ###[/DEF]###
                    
                    ###[HELP]###
                    Dieser Baustein Triggert einen Event auf der Synology Surveillance Station
                    
                    
                    E1: = !=0 = Trigger
                    E2: = IP Adresse der Synology SStation
                    E3: = Port der SStation
                    E4: = Account
                    E5: = Password
                    E6: = EventID
                    
                    A1: = nix 
                    
                    
                    ###[/HELP]###
                    
                    
                    ###[LBS]###
                    <?
                    function LB_LBSID($id) {
                        if ($E=logic_getInputs($id)) {
                                if ($E[1]['refresh']==1) {
                                           logic_callExec(LBSID,$id);
                            }
                        }
                    }
                    
                    ?>
                    ###[/LBS]###
                    
                    
                    ###[EXEC]###
                    <?
                    $httpformat="http"; //hier angeben ob http oder https
                    $port="5000"; //port
                    $loginname="XXX"; //Loginname an der Surveillance Station
                    $passwd="XXX"; //passwort an der Surveillance Station
                    $ip="XXX.XXX.XXX.XXX"; //ip adresse der Surveillance station im LAN
                    
                    //Login an der Surveillance Station:
                    $json = file_get_contents($httpformat."://".$ip.":".$port."/webapi/auth.cgi?api=SYNO.API.Auth&version=3&method=Login& session=SurveillanceStation&account=".$loginname." &passwd=".$passwd."&format=sid");
                    $obj = json_decode($json, true);
                    $sid = $obj["data"]["sid"];
                    
                    //Event 1 auslösen (für Event 2-10 eventId entsprechend anpassen):
                    $json = file_get_contents($httpformat."://".$ip.":".$port."/webapi/entry.cgi?api=SYNO.SurveillanceStation.ExternalEve nt&eventId=1&version=1&method=Trigger&_sid=".$sid) ;
                    
                    //Logout Surveillance Station:
                    $out = file_get_contents($httpformat."://".$ip.":".$port."/webapi/auth.cgi?api=SYNO.API.Auth&version=3&method=Logout &session=SurveillanceStation&_sid=".$sid);
                    
                    ?>
                    ###[/EXEC]###
                    auch sonst bin ich mir nicht sicher, ob das so passt... bitte habt da mal eine Blick drauf..

                    was mach ich eigentlich als Ausgang ?? eigentlich soll des Ding ja nur was machen, wenn der Eingang getriggert wird..
                    geht das auch ohne Ausgang ??

                    Die Selbsthilfegruppe "UTF-8-Probleme" trifft sich diesmal abweichend im groüen Saal.

                    Kommentar


                      #11
                      Ausgänge sind nicht zwingend erforderlich - ein LBS braucht als Mindestanforderung nur 1 Eingang.
                      EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)

                      Kommentar


                        #12
                        Im Nachgang wär vielleicht ein Debugausgang schön.. aber da kann man sich ja Gedanken machen, wenn das mal funktioniert..

                        aktuell tut es das nämlich noch nicht:

                        Angepasst sieht es jetzt so aus:

                        Code:
                        ###[DEF]###
                        [name        =SStation Trigger            ]
                        
                        [e#1    TRIGGER           = Send Trigger         ]
                        [e#2    IP         = IP #init=192.168.178.41  ]
                        [e#3    Port         = Port #init=5000  ]
                        [e#4    Account         = Account #init=Admin  ]
                        [e#5    Password         = Password #init=  ]
                        [e#6    EvtID         = EvtID #init=1  ]
                        
                        [a#1        =nix                ]
                        
                        
                        
                        [v#100    = 1.0 ]
                        [v#101    = 20000000 ]
                        [v#102    = SStation Trigger ]
                        [v#103    = 0 ] 
                        
                        ###[/DEF]###
                        
                        ###[HELP]###
                        Dieser Baustein Triggert einen Event auf der Synology Surveillance Station
                        
                        
                        E1: = !=0 = Trigger
                        E2: = IP Adresse der Synology SStation
                        E3: = Port der SStation
                        E4: = Account
                        E5: = Password
                        E6: = EventID
                        
                        A1: = nix 
                        
                        
                        ###[/HELP]###
                        
                        
                        ###[LBS]###
                        <?
                        function LB_LBSID($id) {
                            if ($E=logic_getInputs($id)) {
                                    if ($E[1]['refresh']==1) {
                                               logic_callExec(LBSID,$id);
                                }
                            }
                        }
                        
                        ?>
                        ###[/LBS]###
                        
                        
                        ###[EXEC]###
                        <?
                        $httpformat="http"; //hier angeben ob http oder https
                        $port=$E[3]['value']; //port
                        $loginname=$E[4]['value']; //Loginname an der Surveillance Station
                        $passwd=$E[5]['value']; //passwort an der Surveillance Station
                        $ip=$E[2]['value']; //ip adresse der Surveillance station im LAN
                        
                        //Login an der Surveillance Station:
                        $json = file_get_contents($httpformat."://".$ip.":".$port."/webapi/auth.cgi?api=SYNO.API.Auth&version=3&method=Login& session=SurveillanceStation&account=".$loginname." &passwd=".$passwd."&format=sid");
                        $obj = json_decode($json, true);
                        $sid = $obj["data"]["sid"];
                        
                        //Event 1 auslösen (für Event 2-10 eventId entsprechend anpassen):
                        $json = file_get_contents($httpformat."://".$ip.":".$port."/webapi/entry.cgi?api=SYNO.SurveillanceStation.ExternalEvent&eventId=".$E[6]."&version=1&method=Trigger&_sid=".$sid);
                        
                        
                        //Logout Surveillance Station:
                        $out = file_get_contents($httpformat."://".$ip.":".$port."/webapi/auth.cgi?api=SYNO.API.Auth&version=3&method=Logout &session=SurveillanceStation&_sid=".$sid);
                        
                        ?>
                        ###[/EXEC]###
                        geht halt leider nicht...
                        Die Selbsthilfegruppe "UTF-8-Probleme" trifft sich diesmal abweichend im groüen Saal.

                        Kommentar


                          #13
                          hmm... jetzt bin ich weiter.. leider bekomm ich im Log ne Fehlermeldung.. und ich weiß nicht wieso:
                          2016-11-17 14:27:00 442583 ? 2648 Datei: /usr/local/edomi/www/data/liveproject/lbs/EXE19009999.php | Fehlercode: 8 | Zeile: 16 | Undefined index: data ERROR
                          der passenden Code dazu sieht so aus:
                          PHP-Code:
                          ###[LBS]###
                          <?
                          function LB_LBSID($id) {
                              if ($E=logic_getInputs($id)) {
                                      if ($E[1]['refresh']==1) {
                                                 logic_callExec(LBSID,$id);
                                  }
                              }
                          }

                          ?>
                          ###[/LBS]###


                          ###[EXEC]###
                          <?
                          require(dirname(__FILE__)."/../../../../main/include/php/incl_lbsexec.php");
                          sql_connect();

                          if ($E=getLogicEingangDataAll($id)) {
                          $httpformat="http"; //hier angeben ob http oder https
                          $port=$E[3]['value']; //port
                          $loginname=$E[4]['value']; //Loginname an der Surveillance Station
                          $passwd=$E[5]['value']; //passwort an der Surveillance Station
                          $ip=$E[2]['value']; //ip adresse der Surveillance station im LAN
                          $EvtID = $E[6]['value']; //EventID

                          //Login an der Surveillance Station:
                          $json = file_get_contents($httpformat."://".$ip.":".$port."/webapi/auth.cgi?api=SYNO.API.Auth&version=3&method=Login& session=SurveillanceStation&account=".$loginname." &passwd=".$passwd."&format=sid");
                          $obj = json_decode($json, true);
                          $sid = $obj["data"]["sid"];

                          //Event 1 auslösen (für Event 2-10 eventId entsprechend anpassen):
                          $json = file_get_contents($httpformat."://".$ip.":".$port."/webapi/entry.cgi?api=SYNO.SurveillanceStation.ExternalEvent&eventId=".$EvtID."&version=1&method=Trigger&_sid=".$sid);


                          //Logout Surveillance Station:
                          $out = file_get_contents($httpformat."://".$ip.":".$port."/webapi/auth.cgi?api=SYNO.API.Auth&version=3&method=Logout &session=SurveillanceStation&_sid=".$sid);

                          sql_disconnect();
                          }
                          ?>
                          ###[/EXEC]###
                          der mäkelt da irgendwie dieses "data" an..
                          der Response sieht aber wie folgt aus:
                          {"data":{"sid":"fqXTIaMoug8zUB3J4N01003"},"success ":true}
                          kann mir da einer sagen wieso er das anmeckert ?

                          Die Selbsthilfegruppe "UTF-8-Probleme" trifft sich diesmal abweichend im groüen Saal.

                          Kommentar


                            #14
                            Das geht:
                            Code:
                            ###[DEF]###
                            [name        =SStation Trigger            ]
                            
                            [e#1    HTTP Mode           = http#init=http         ]
                            [e#2    IP         = IP #init=10.0.0.22  ]
                            [e#3    Port         = Port #init=5000  ]
                            [e#4    Account         = Account #init=  ]
                            [e#5    Password         = Password #init= ]
                            [e#6    EvtID         = EvtID #init=1  ]
                            
                            [a#1        =nix                ]
                            
                            
                            [v#100    = 1.0 ]
                            [v#101    = 20000000 ]
                            [v#102    = SStation Trigger ]
                            [v#103    = 0 ]
                            
                            ###[/DEF]###
                            
                            ###[HELP]###
                            Dieser Baustein Triggert einen Event auf der Synology Surveillance Station
                            
                            
                            E1: = Http / https der Synology
                            E2: = IP Adresse der Synology SStation
                            E3: = Port der SStation
                            E4: = Account
                            E5: = Password
                            E6: = EventID
                            
                            A1: = nix
                            
                            
                            ###[/HELP]###
                            
                            
                            ###[LBS]###
                            <?
                            function LB_LBSID($id) {
                                if ($E=logic_getInputs($id)) {
                                        if ($E[6]['refresh']==1) {
                                                   logic_callExec(LBSID,$id);
                                    }
                                }
                            }
                            
                            ?>
                            ###[/LBS]###
                            
                            
                            ###[EXEC]###
                            <?
                            require(dirname(__FILE__)."/../../../../main/include/php/incl_lbsexec.php");
                            sql_connect();
                            if ($E=getLogicEingangDataAll($id)) {
                            
                                    $httpformat=$E[1]['value']; //hier angeben ob http oder https
                                    $ip=$E[2]['value']; //ip adresse der Surveillance station im LAN
                                    $port=$E[3]['value']; //port
                                    $loginname=$E[4]['value']; //Loginname an der Surveillance Station
                                    $passwd=$E[5]['value']; //passwort an der Surveillance Station
                                    $event=$E[6]['value'];
                            
                                    //Login an der Surveillance Station:
                            
                                    $json = file_get_contents("".$httpformat."://".$ip.":".$port."/webapi/auth.cgi?api=SYNO.API.Auth&method=Login&version=3&account=".$loginname."&passwd=".$passwd."&session=SurveillanceStation&format=sid");
                            
                                    $obj = json_decode($json, true);
                                    $sid = $obj["data"]["sid"];
                            
                            
                                    //Event 1 auslösen (für Event 2-10 eventId entsprechend anpassen):
                                    file_get_contents("".$httpformat."://".$ip.":".$port."/webapi/entry.cgi?api=SYNO.SurveillanceStation.ExternalEvent&eventId=".$event."&version=1&method=Trigger&_sid=".$sid);
                            
                                    //Logout Surveillance Station:
                                    file_get_contents("".$httpformat."://".$ip.":".$port."/webapi/auth.cgi?api=SYNO.API.Auth&version=3&method=Logout&session=SurveillanceStation&_sid=".$sid);
                            }
                            sql_disconnect();
                            ?>
                            ###[/EXEC]###
                            Achtung E6 triggert hier..... Noch ein bisschen Errorhandling und der BS ist fertig....
                            Zuletzt geändert von vento66; 17.11.2016, 15:29.

                            Kommentar


                              #15
                              es geht... oleee...

                              hier mal der Code.. noch mit Tracelog..

                              PHP-Code:
                              ###[DEF]###
                              [name        =SStation Trigger            ]

                              [e#1    TRIGGER           = Send Trigger         ]
                              [e#2    IP                 = IP #init=192.168.178.41  ]
                              [e#3    Port             = Port #init=5000  ]
                              [e#4    Account         = Account #init=Admin  ]
                              [e#5    Password         = Password #init=  ]
                              [e#6    EvtID             = EvtID #init=1  ]

                              [a#1    Ausgang            = nix                ]



                              [v#100    = 1.0 ]
                              [v#101    = 19009999 ]
                              [v#102    = SStation Trigger ]
                              [v#103    = 0 ] 

                              ###[/DEF]###

                              ###[HELP]###
                              Dieser Baustein Triggert einen Event auf der Synology Surveillance Station


                              E1: = !=0 = Trigger
                              E2: = IP Adresse der Synology SStation
                              E3: = Port der SStation
                              E4: = Account
                              E5: = Password
                              E6: = EventID

                              A1: = nix 


                              ###[/HELP]###


                              ###[LBS]###
                              <?
                              function LB_LBSID($id) {
                                  if ($E=logic_getInputs($id)) {
                                          if ($E[1]['refresh']==1) {
                                                     logic_callExec(LBSID,$id);
                                      }
                                  }
                              }

                              ?>
                              ###[/LBS]###


                              ###[EXEC]###
                              <?
                              require(dirname(__FILE__)."/../../../../main/include/php/incl_lbsexec.php");
                              sql_connect();

                              if ($E=getLogicEingangDataAll($id)) {
                              $httpformat="http"; //hier angeben ob http oder https
                              $port=$E[3]['value']; //port
                              $loginname=$E[4]['value']; //Loginname an der Surveillance Station
                              $passwd=$E[5]['value']; //passwort an der Surveillance Station
                              $ip=$E[2]['value']; //ip adresse der Surveillance station im LAN
                              $EvtID = $E[6]['value']; //EventID

                              writeToTraceLog(0,true,'EXEC-Script gestartet.'); 

                              //Login an der Surveillance Station:
                              $json = file_get_contents($httpformat."://".$ip.":".$port."/webapi/auth.cgi?api=SYNO.API.Auth&method=Login&version=3&account=".$loginname."&passwd=".$passwd."&session=SurveillanceStation&format=sid");
                              $obj = json_decode($json, true);
                              $sid = $obj["data"]["sid"];


                              writeToTraceLog(0,true,$json); 
                              writeToTraceLog(0,true,$sid); 

                              //Event 1 auslösen (für Event 2-10 eventId entsprechend anpassen):
                              $json = file_get_contents($httpformat."://".$ip.":".$port."/webapi/entry.cgi?api=SYNO.SurveillanceStation.ExternalEvent&eventId=".$EvtID."&version=1&method=Trigger&_sid=".$sid);

                              writeToTraceLog(0,true,$json); 


                              //Logout Surveillance Station:
                              $out = file_get_contents($httpformat."://".$ip.":".$port."/webapi/auth.cgi?api=SYNO.API.Auth&version=3&method=Logout&session=SurveillanceStation&_sid=".$sid);

                              writeToTraceLog(0,true,$out);

                              sql_disconnect();
                              }
                              ?>
                              ###[/EXEC]###
                              Gruß Martin

                              das mit dem "data" Fehler kommt aber immer noch hin und wieder.. .keine Ahnung wieso.. vielleicht hat ja einer an Tipp von euch

                              Die Selbsthilfegruppe "UTF-8-Probleme" trifft sich diesmal abweichend im groüen Saal.

                              Kommentar

                              Lädt...
                              X