Ankündigung

Einklappen
Keine Ankündigung bisher.

Telenot LBS--jemand Lust

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

    Telenot LBS--jemand Lust

    Hi,

    ist hier jemand im Besitzt einer Telenot Alarmanlage und hat Lust zusammen einen LBS zu entwickeln???

    Gruß Benjamin

    #2
    Telenot ist vorhanden, Lust auch. Nur mit dem Faktor Zeit schaut es im Moment schlecht aus. Es gab mal eine Abfrage, oder einen Baustein für den HS, der nie veröffentlicht werden durfte. Vielleicht ist das schon mal ein Ansatz!

    Kommentar


      #3
      Ja ich habe von dem Baustein gelesen, habe auch selbst mal etwas mit HS gefummelt aber nie richtig Fertig gemacht. Problem am Veröffentlichen ist natürlich auch die Schnittstellenbeschreibung von Telenot. Ich hab die Schnittstellenbeschreibung vorliegen, nur müsste man schauen wie man es "Telenot Vertragsgerecht" in einen LBS packt.

      Faktor Zeit ist denke ich das größte Problem...

      Ich bin derzeit mal ein wenig mit meinem RS22 LAN Converter am Testen, nur da scheint es noch paar Probleme zu geben, der will nicht ganz so wie ich möchte. Muss derzeit mal rausfinden ob der Converter überhaupt das kann was ich will, wobei er ja eigentlich nicht viel können muss :-)

      Dachte nur wenn noch einer oder vlt zwei mit ein paar Sachen testen geht es schneller vorwärts ......

      Gruß

      Kommentar


        #4
        Zum testen wird sich schon Zeit finden....

        Kommentar


          #5
          Ich werde in den kommenden Tagen mal etwas fummeln und mich dann bei dir melden...eventuell findet sich ja noch jemand mit etwas Zeit

          Kommentar


            #6
            Hi,

            ich bräuchte mal ein wenig Hilfe bzgl. ser2net und php....

            Frage 1: Kann ser2net so eingerichtet werden, dass er mir die Daten via UDP direkt an Edomi auf einen Port sendet???

            Wie kann ich mit php eine TCP verbindung abfragen ??? fsocket???

            Danke

            Gruß

            Kommentar


              #7
              Hallo Benji,

              ich habe sowohl eine Telenot complex 400h mit allem Drum und dran, als auch einen Homeserver. Ich wäre gern dabei und hätte auch Lust dazu.

              PHP-Code:
              <?php
              error_reporting
              (E_ALL);

              echo 
              "<h2>TCP/IP-Verbindung</h2>\n";

              /* Den Port für den WWW-Dienst ermitteln. */
              $service_port getservbyname('www''tcp');

              /* Die  IP-Adresse des Zielrechners ermitteln. */
              $address gethostbyname('www.example.com');

              /* Einen TCP/IP-Socket erzeugen. */
              $socket socket_create(AF_INETSOCK_STREAMSOL_TCP);
              if (
              $socket === false) {
                  echo 
              "socket_create() fehlgeschlagen: Grund: " socket_strerror(socket_last_error()) . "\n";
              } else {
                  echo 
              "OK.\n";
              }

              echo 
              "Versuche, zu '$address' auf Port '$service_port' zu verbinden ...";
              $result socket_connect($socket$address$service_port);
              if (
              $result === false) {
                  echo 
              "socket_connect() fehlgeschlagen.\nGrund: ($result) " socket_strerror(socket_last_error($socket)) . "\n";
              } else {
                  echo 
              "OK.\n";
              }

              $in "HEAD / HTTP/1.1\r\n";
              $in .= "Host: www.example.com\r\n";
              $in .= "Connection: Close\r\n\r\n";
              $out '';

              echo 
              "HTTP HEAD request senden ...";
              socket_write($socket$instrlen($in));
              echo 
              "OK.\n";

              echo 
              "Serverantwort lesen:\n\n";
              while (
              $out socket_read($socket2048)) {
                  echo 
              $out;
              }

              echo 
              "Socket schließen ...";
              socket_close($socket);
              echo 
              "OK.\n\n";
              ?>
              Zuletzt geändert von skynet74; 23.08.2016, 11:58.

              Kommentar


                #8
                Homeserver ist aber hier nicht gefragt! Edomi ist hier die Devise

                Kommentar


                  #9
                  Achso, sorry. Mein EIB400 Modul nervt nämlich so sehr, dass ich irgendwann wohl doch einen Baustein für den HS programmieren werde. Ich bin durch eine Suche hierauf gestoßen!

                  Kommentar


                    #10
                    Hallo Benji,

                    ich habe einen LBS für das Senden und den Empfang von UDP (TCP sollte machbar sein) an einen WebServer (Telnet?) geschrieben, bin aber noch nicht fertig ...

                    Der LBS hört ständig zu (UDP-Listener) [WHILE] und wenn ein Befehl abgeschickt wird [ELSE] dann sendet er an den Webserver ...

                    Vielleicht hilft dir das irgendwie … wenn nicht, dann war es ein Versuch zu helfen :-)

                    PHP-Code:
                    <?php

                    require(dirname(__FILE__)."/../../../../main/include/php/incl_lbsexec.php");
                    set_time_limit(0);
                    sql_connect();

                    if (
                    $E=getLogicEingangDataAll($id)) {

                    // WICHTIG: PHP-Fehlerbehandlung abschalten, sonst generiert socket_recv() "Warnungen", wenn keine Daten empfangen wurden

                        
                    restore_error_handler();
                        
                    error_reporting(0);

                        if (
                    $socket socket_create(AF_INETSOCK_DGRAMSOL_UDP)) {
                            if (
                    socket_bind($socket,0,$E[32]['value'])) {

                                while (
                    getSysInfo(1)>=1) {


                    // Hier ein UDP-Listener, der  N I C H T  auf Datenpakete wartet. Die Schleife läuft also ständig durch (LBSd)!
                                
                                    
                    $len socket_recv($socket,$data,1024,MSG_DONTWAIT);
                                    
                                    if (
                    $len !== false) {
                    //                     $data = preg_replace("/[^A-Za-z0-9&=]/",'',$data);
                                        
                    parse_str($data$output);  //  $output = array();


                    //    ---- UDP-Pakete | EMPFANGEN : Hier wird der UDP-String (Rückmeldung) von iTunes geparst ...
                    //  ---- In klassischem Still sind die UDP-Pakete als Status-Rückmeldungen zu verstehen - 1/0 oder Wert ...
                                    
                    //    ---- UDP-Pakete | EMPFANGEN | iTunes | PLAYER:
                    //  ---- String z.B.: 'EA=1&Play=1&Pause=0&Stop=0&MastVol=40'

                                        
                    if (array_key_exists('EA',     $output)) {
                                            
                    setLogicLinkAusgang($id,1$output['EA']);
                                            
                    writeToTraceLog(0,true,'iTunes RM | A01 | EIN/AUS exists    : '.array_key_exists('EA',$output));
                                            
                    writeToTraceLog(0,true,'iTunes RM | A01 | EIN/AUS Wert        : '.$output['EA']);
                                        }




                    ...





                                    } else {


                    //    ---- HTTP-Requests | kein UDP-Paket empfangen | http SENDEN:
                                                           
                                        
                    if ($E=getLogicEingangDataAll($id)) {

                                            
                    $url "http://".$E[34]['value']."/%7E".$E[33]['value']."/eDOMI.php?c=";
                                                    

                    //    ---- HTTP-Requests | iTunes | Steuerung:
                                                        
                    //                        PLAY: mit &p1=fadein / &p2=3 [s] Verzögerung | 'play' erwartet "1"

                                               
                    if (getLogicElementVar($id,2) == 1) {
                                                   if (
                    $E[8]['value'] == 1) {
                                                       
                    $ctx=stream_context_create(array('http' => array('timeout' => )));
                                                       
                    $r=file_get_contents($url.'play&p1=fadein&p2='.$E[9]['value'],0,$ctx);
                                                    
                    writeToTraceLog(0,true,'iTunes E02 URL  :'.$url.'play&p1=fadein'.'&p2='.$E[9]['value'].' / ctx '.$ctx);
                                                } else {
                                                    
                    $ctx=stream_context_create(array('http' => array('timeout' => )));
                                                    
                    $r=file_get_contents($url.'play',0,$ctx);
                                                    
                    writeToTraceLog(0,true,'iTunes E02 URL  :'.$url.'play'.' / ctx '.$ctx);
                                                    }
                                                
                    setLogicElementVar($id,2,0);
                                            }


                                        }            
                                    }
                                    
                    usleep(1000*100);  // z.B. 100ms (*100) warten - wichtig, um die CPU-Last zu begrenzen !!!
                                
                    }
                            }
                        }
                        
                    socket_close($socket);
                    }
                    sql_disconnect();

                    ?>
                    Danke und LG, Dariusz
                    GIRA | ENERTEX | MDT | MEANWELL | 24VDC LED | iBEMI | EDOMI | ETS5 | DS214+ | KNX/RS232-GW-ROTEL

                    Kommentar


                      #11
                      EDOMI hat bereits die folgenden Telnet-Funktionen ab Werk dabei - hier der Quelltext (die Funktionen sind schon verfügbar - der Quelltext soll nur zum Verständnis dienen!):

                      EDIT:
                      Die Funktionen werden standardmäßig nicht(!) inkludiert (im EXEC-Abschnitt). Die Datei kann natürlich bei Bedarf eingebunden werden (incl_telnet.php).


                      PHP-Code:
                      function telnetOpen($ip,$port,$timeout) {
                          
                      //Öffnet eine Telnet-Session
                          //$ip: IP-Adresse
                          //$Port: Telnet-Port
                          //$timeout: Timeout in Sekunden
                          //return: Connection-Handler, oder false=Fehler
                          
                      $con=fsockopen($ip,$port,$x,$xx,$timeout);
                          if (
                      $con) {
                              
                      stream_set_blocking($con,0);
                              return 
                      $con;
                          } else {
                              return 
                      false;
                          }
                      }

                      function 
                      telnetClose($con) {
                          
                      //Schließt eine Telnet-Session
                          //$con: Connection-Handler
                          
                      return fclose($con);
                      }

                      function 
                      telnetSend($con,$n) {
                          
                      //Sendet in eine Telnet-Session
                          //$con: Connection-Handler
                          //$n: Inhalt (String)
                          //return: false=Fehler, sonst Anzahl der geschriebenen Bytes
                          
                      return fwrite($con,$n."\r\n");
                      }

                      function 
                      telnetWait($con,$waitFor,$readBytes,$timeout) {
                          
                      //Wartet auf einen bestimmten String und liefert true/false zurück
                          //$con: Connection-Handler
                          //$waitFor: String, auf den gewartet werden soll
                          //$readBytes: soviele Bytes werden in einem Rutsch gelesen
                          //$timeout: Timeout
                          //return: false=Timeout/nicht gefunden, true=Gefunden
                          
                      $ok=false;
                          
                      $n='';
                          
                      $t0=microtime(true);
                          while (!
                      feof($con)) {
                              
                      $n.=fread($con,$readBytes);
                              if (
                      strpos(strtoupper($n),strtoupper($waitFor))!==false) {
                                  
                      $ok=true;
                                  break;
                              }
                              if ((
                      microtime(true)-$t0)>$timeout) {
                                  break;
                              }
                              
                      usleep(100*1000);
                          }
                          return 
                      $ok;
                      }

                      function 
                      telnetWait2($con,$waitFor,$readBytes,$timeout) {
                          
                      //Wartet auf einen bestimmten String und liefert die Antwort zurück
                          //$con: Connection-Handler
                          //$waitFor: String, auf den gewartet werden soll
                          //$readBytes: soviele Bytes werden in einem Rutsch gelesen
                          //$timeout: Timeout
                          //return: die komplette Antwort, oder false=Timeout/nicht gefunden
                          
                      $ok=false;
                          
                      $n='';
                          
                      $t0=microtime(true);
                          while (!
                      feof($con)) {
                              
                      $n.=fread($con,$readBytes);
                              if (
                      strpos(strtoupper($n),strtoupper($waitFor))!==false) {
                                  
                      $ok=$n;
                                  break;
                              }
                              if ((
                      microtime(true)-$t0)>$timeout) {
                                  break;
                              }
                              
                      usleep(100*1000);
                          }
                          return 
                      $ok;

                      Zuletzt geändert von gaert; 23.08.2016, 20:30.
                      EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)

                      Kommentar


                        #12
                        Hi,

                        ich hab jetzt mal ein wenig mit den Telnet Funktionen ab Werk gespielt....dazu hab ich folgenden Code gemacht.....

                        PHP-Code:
                        <?
                        require(dirname(__FILE__)."/../../../../main/include/php/incl_lbsexec.php");

                        set_time_limit(0);    //Script soll maximal 2 Sekunden laufen

                        sql_connect();


                        $E=getLogicEingangDataAll($id);
                        $ip = $E[3]['value'];
                        $port = $E[4]['value'];



                        function telnetOpen($ip,$port,$timeout) {
                            //Öffnet eine Telnet-Session
                            //$ip: IP-Adresse
                            //$Port: Telnet-Port
                            //$timeout: Timeout in Sekunden
                            //return: Connection-Handler, oder false=Fehler
                            $con=fsockopen($ip,$port,$timeout);
                            if ($con) {
                                stream_set_blocking($con,0);
                                return $con;
                            } else {
                                return false;
                            }
                        }

                        setLogicLinkAusgang($id,1,$con);

                        sql_disconnect();

                        ?>
                        Allerdings bekomme ich dann beim Aktivieren folgende Fehlermeldung

                        Code:
                         
                         | Fehlercode: 8 | Zeile: 30 | Undefined variable: con	ERROR
                        Eigentlich ist $con doch angegeben oder???

                        Kommentar


                          #13
                          $timeout() ?
                          Danke und LG, Dariusz
                          GIRA | ENERTEX | MDT | MEANWELL | 24VDC LED | iBEMI | EDOMI | ETS5 | DS214+ | KNX/RS232-GW-ROTEL

                          Kommentar


                            #14
                            $con ist eine lokale Variable in der function().
                            Die Fehlermeldung bezieht sich auf:

                            PHP-Code:
                            setLogicLinkAusgang($id,1,$con); 
                            Das ist der global Kontext. Hier ist $con unbekannt.

                            Kommentar


                              #15
                              $con wird von der Funktion zurückgegeben - allerdings müsste man die Funktion auch aufrufen
                              EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)

                              Kommentar

                              Lädt...
                              X