Ankündigung

Einklappen
Keine Ankündigung bisher.

Binding für ITGW-433 Gateway von Intertechno?

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

    Binding für ITGW-433 Gateway von Intertechno?

    Hi zusammen,

    möchte von FHEM auf OpenHAB umsteigen, da die Konfiguration von FHEM einfach grausig ist und das Denon Modul für meinen AVR einfach ständig abschmiert.
    Nun benutze ich aber zur Steuerung meiner 433Mhz Steckdosen von Elro ein Connair Gatway, welches gleich wie das ITGW-433 von Intertechno funktioniert, das blöde ist aber nur, dass ich kein Binding finden konnte und ich nicht wirklich mit der Architektur vertraut bin, zwar bin ich Java Entwickler von Beruf, aber hab nicht wirklich so viel Motivation extra dafür mein eigenes Binding zu schreiben.
    Gehöre eher zu der Sparte Menschen, die nach 8 Stunden programmieren am Tag, einfach keine Lust mehr auf Coden nach Feierabend hat. :P

    Die Frage ist, gibt es vielleicht doch ein Binding für das ITGW-433 oder ein ähnliches Binding mit Source, das ich einfach umschreiben könnte?
    Zuletzt geändert von shawly; 07.01.2016, 08:07.

    #2
    Moin shawly,
    hast du eine Idee, wie das Gateway angesprochen werden will bzw. Wie das Protokoll aussieht? Evtl. könnte das TCP oder HTTP Binding dann was für dich sein. Oder gibt es externe PHP oder Python Skripts für die Steuerung? Dann das exec Binding.

    Viele Grüße

    Mitch

    Kommentar


      #3
      http://luckow.org/openhab-brennenstu...utomatisierung

      Man muss solch einen TXP wert an das Gateway senden, hier gäbe es auch noch nen PHP Schnipsel aus dem Connair Forum der mit den Elros gut funktioniert:
      PHP-Code:
      <?php

      function tx433_send($msg)
      {
         
      $IP="192.168.10.25";
         
      $PORT=49880;
        
         
      $sock socket_create(AF_INETSOCK_DGRAMSOL_UDP);
         
      $len strlen($msg);

         if(
      $sock) {
            
      socket_sendto($sock$msg$len0$IP$PORT);
            
      socket_close($sock);
         }
         else {
            echo 
      "Kann ConnAir nicht erreichen IP:PORT=".$IP.":".$PORT."\n";
            exit(
      0);
         }
        
      }
      function 
      tx433_brennstuhl($Master,$Slave,$onoff)
      {
         
      $sA=0;
         
      $sG=0;
         
      $sRepeat=15;
         
      $sPause=5600;
         
      $sTune=350;
         
      $sBaud=25;
         
      $sSpeed=16;
        
         
      $uSleep=800000;
        
         
      $HEAD="TXP:$sA,$sG,$sRepeat,$sPause,$sTune,$sBaud,";
         
      $TAIL=",1,1,$sSpeed,;";
         
      $AN="1,3,1,3,3";
         
      $AUS="3,1,1,3,1";
        
         
      $bitLow=1;
         
      $bitHgh=3;
        
         
      $seqLow=$bitHgh.",".$bitHgh.",".$bitLow.",".$bitLow.",";
         
      $seqHgh=$bitHgh.",".$bitLow.",".$bitHgh.",".$bitLow.",";

         
      $bits=$Master;
         
      $msg="";
         for(
      $i=0;$i<strlen($bits);$i++) {  
            
      $bit=substr($bits,$i,1);
            if(
      $bit=="0")
               
      $msg=$msg.$seqLow;
            else
               
      $msg=$msg.$seqHgh;
         }
         
      $msgM=$msg;
         
      $bits=$Slave;
         
      $msg="";
         for(
      $i=0;$i<strlen($bits);$i++) {
            
      $bit=substr($bits,$i,1);
            if(
      $bit=="0")
               
      $msg=$msg.$seqLow;
            else
               
      $msg=$msg.$seqHgh;
         }
         
      $msgS=$msg;
        
          
      $msg_ON=$HEAD.$bitLow.",".$msgM.$msgS.$bitHgh.",".$AN.$TAIL;
         
      $msg_OFF=$HEAD.$bitLow.",".$msgM.$msgS.$bitHgh.",".$AUS.$TAIL;
        
         if(
      $onoff==1)
            
      $msg=$msg_ON;
         else
            
      $msg=$msg_OFF;
         
      tx433_send($msg);
      }

      function 
      main($argc,$argv)
      {
         if(
      $argc!=5) {
            echo 
      "Usage: ".$argv[0]." vendor params\n";
            echo 
      "   vendor params\n";
            echo 
      "   b (Brennstuhl) MasterID SlaveID on|off\n";
            echo 
      "   ID-Format: 00000-11111\n";
            exit (
      0);
         }
        
         
      $vendor=$argv[1];
         if(
      $vendor=="b") {
            
      $Master=$argv[2];
            
      $Slave=$argv[3];
            if(
      bindec($Master)<0||bindec($Master)>31) {
               echo 
      "Master not valid, must be 00000..11111\n";
               exit(
      0);
            }
            if(
      bindec($Slave)<0||bindec($Slave)>31) {
               echo 
      "Slave not valid, must be 00000..11111\n";
               exit(
      0);
            }      
            
      $onoff=$argv[4];
            if(
      $onoff == "on")
               
      $onoff=1;
            else
               
      $onoff=0;
            
      tx433_brennstuhl($Master,$Slave,$onoff);
         }
         else {
            echo 
      "unknown Vendor ".$vendor."\n";
            exit(
      0);
         }
      }

      main($argc,$argv);

      ?>
      Der Code kann mit "php tx433.php b 01010 01000 on" ausgeführt werden, was einem das ganze vereinfacht da ich nur den Master und Slave Code wissen muss und nicht den ganzen TXP Wert für jede Steckdose extra zusammen frickeln muss.
      Möchte aber nicht zwingend PHP installieren damit ich den Code ausführen kann, hätte das wirklich gern in OpenHAB integriert, wie bei nem Binding.

      Den PHP Code in Java zu schreiben stellt für mich das geringste Problem dar, nur das Ganze in ein Binding zu verwandeln. Hätte am liebsten den Sourcecode für ein ähnliches Binding das ich lediglich etwas abwandeln müsste und meine Logik implementieren müsst.

      Solche Lösungen wie nen Shell Befehl über OpenHAB auszuführen oder ein HTTP GET den TXP Wert per TCP zu senden wär natürlich problemlos möglich, aber erinnert halt schon wieder zu sehr an das FHEM rumgehacke und ich mag saubere Lösungen wesentlich besser.

      Hat mir jemand vielleicht ne Source für ein Binding die ich als Vorlage verwenden könnte?
      Zuletzt geändert von shawly; 07.01.2016, 10:04.

      Kommentar


        #4
        Gefühlt würde ich sagen, schau dir mal das FS20 Binding an.

        https://github.com/openhab/openhab/wiki/FS20-Binding

        Ich hab mir mal eine Grafik gemacht, wie die Klassen für openhab 1.x zusammenhängen (s. Anhang). Hab das Binding einfach mal ITGW433 genannt.
        itgw433.png
        Allerdings solltest du immer im Kopf behalten, dass es bald openHAB 2 geben wird, welches ein bischen anders aufgebaut ist. Es gibt zwar einen Compatibility Layer für 1.x bindings, wenn du aber ein "echtes" OH2 Binding möchtest, musst du vieles neu machen.

        Meine PHP Kenntnisse sind extrem schlecht. Ist es richtig, dass der PHP Code "nur" eine TCP Verbindung aufmacht und dann einen String sendet?

        Kommentar


          #5
          Hmm also OpenHAB2 gibts ja schon aber ist bisher nur Alpha, schätze es wird erst mal ne Beta geben und ich bin jetzt nicht so begeistert von Betas. Und es gibt so wie es im Gitrepo von OpenHAB2 aussieht, noch nicht so viele Bindings, vorallem fehlt mir das Denon Binding, welches ich für meinen AVR bräuchte, daher werde ich wohl sowieso bei OpenHAB 1 bleiben bis das alles nachgezogen wird, ein Administrations Interface kann ich mir mit HABmin auch zulegen, daher brauche ich OpenHAB2 noch nicht.

          Aber danke für das Diagramm, hilft mir morgen sicher weiter, werd mir das mal anschauen sofern ich Zeit finde!

          Ja genau der PHP Schnipsel bastelt sich lediglich den passenden TXP string zusammen aus dem Master und Slave und dem Status also ON oder OFF und sendet den String dann einfach per TCP an das Gateway, mehr macht der nicht.

          Edit: Ohje hab schon Probleme mit dem IDE einrichten.. Erst will Maven die ANTLR Jar nicht downloaden wegen dem Proxy hier, als ich das dann manuell gemacht hab laufen einige Unittests nicht, jetzt skippe ich einfach die Tests und nun will er ein paar Klassen nicht bauen. Mir ist echt noch kaum ein Open Source Projekt untergekommen, bei dem ich mal keine Probleme beim IDE Setup hatte und OpenHAB ist mitunter eines der schlimmsten... Die Vagrant Container sind ja auch nicht mehr verfügbar.. Hab jetzt schon keine Lust mehr.
          Zuletzt geändert von shawly; 08.01.2016, 11:17.

          Kommentar


            #6
            Hi, schon gesehen? Mit 1.8 (seit gestern) gibt's ne neue Installationsroutine für die IDE.
            Vielleicht geht's mit der besser?
            Grüße
            Mitch

            Kommentar


              #7
              Zitat von mitch77 Beitrag anzeigen
              Hi, schon gesehen? Mit 1.8 (seit gestern) gibt's ne neue Installationsroutine für die IDE.
              Vielleicht geht's mit der besser?
              Grüße
              Mitch

              Nope liegt am Proxy, Maven hat zwar den Proxy eingetragen aber nutzt ihn nicht deswegen kriegt er nen timeout wenn er die freetts.jar runterladen will..

              Kommentar

              Lädt...
              X