Ankündigung

Einklappen
Keine Ankündigung bisher.

LBS 19000925 HOMEMATIC-EDOMI-Master und alle darauf basierenden LBSen

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

    #16
    Hallo Gernot,

    kleiner Zwischenstand:
    Ich habe den edomi-Server neu gestartet mit nun folgenden Eintrag im HM-Master Log
    Code:
     [TABLE="class: log, border: 0, cellpadding: 0, cellspacing: 0, width: 0, height: 12"]
    [TR]
    [TD]2017-09-10 14:09:10[/TD]
     			[TD]078845[/TD]
     			[TD]19161[/TD]
     			[TD]debug[/TD]
     			[TD]************Trigger -> E1 Server An- und Abmeldung*****************************************************************************************[/TD]
     		[/TR]
    [TR]
    [TD]2017-09-10 14:09:10[/TD]
     			[TD]096931[/TD]
     			[TD]19161[/TD]
     			[TD]debug[/TD]
     			[TD]An CCU2 angemeldet:192.168.24.84/shared/php/HOMEMATIC-EDOMI-Master-XML-RPC-Server.php[/TD]
     		[/TR]
    [TR]
    [TD]2017-09-10 14:09:10[/TD]
     			[TD]097496[/TD]
     			[TD]19161[/TD]
     			[TD]debug[/TD]
     			[TD]LBS ID 997 in File: /usr/local/edomi/www/shared/php/HOMEMATIC-EDOMI-Master-daten-edomi_lbs.data['Master'] geschrieben[/TD]
     		[/TR]
    [TR]
    [TD]2017-09-10 14:09:10[/TD]
     			[TD]097893[/TD]
     			[TD]19161[/TD]
     			[TD]debug[/TD]
     			[TD]__________________________________________________Trigger E1 ENDE _________Laufzeit: 0.022067sec___________________________[/TD]
     		[/TR]
    [/TABLE]
    Ich denke das sieht erstmal gut aus.
    Ich werde nun versuchen, den Fensterkontakt zu integrieren.
    Vielen Dank an dieser Stelle erstmal für Deine Ausdauer zur Fehlersuche.

    Andreas

    Kommentar


      #17
      Kanns mit putty und Filezilla erklären aber WinSCP habe ich noch nie verwendet.

      Bin gerade auf MacOS umgestiegen und kämpfe noch (Putty und Notepad++ fehlen mir ).

      Doch mit dem Terminal und dem Befehl "ssh root@IP_von_Edomi " kam ich auf edomi und konnte das script ausführen.


      Kommentar


        #18
        Na dann viel Erfolg!

        Kommentar


          #19
          Hallo Gernot,

          was nun funktioniert, ist das sich die Geräte LBS am HM-Master registrieren.

          Code:
           [TABLE="class: log, border: 0, cellpadding: 0, cellspacing: 0, width: 0, height: 12"]
          [TR]
          [TD]2017-09-10 14:42:12[/TD]
           			[TD]091376[/TD]
           			[TD]7896[/TD]
           			[TD]debug[/TD]
           			[TD]Ausg�nge HOMEMATIC-EDOMI-Master registriert[/TD]
           		[/TR]
          [/TABLE]
          allerdings werden die Ausgänge des Geräte LBS (Fensterkontakt) nicht gesetzt, außer wenn diese am LBS selbst manuell über den get Value Eingang getriggert werden.
          Ändert sich beispelsweise der Zustand des Fensterkontaktes, wird nicht automatisch der Zustand am LBS Ausgang aktualisiert.
          Ich habe noch weitere Versuche mit den Motorschloss gemacht. Auch hier funktioniert die Ansteuerung der Eingänge, jedoch werden die Ausgänge auch hier nicht beschrieben.

          Folgende Meldung habe ich im Log des HM-Master (ich weiß nicht ob das von Bedeutung ist):
          Code:
           [TABLE="class: log, border: 0, cellpadding: 0, cellspacing: 0, width: 0, height: 12"]
          [TR]
          [TD]2017-09-10 14:42:12[/TD]
           			[TD]086774[/TD]
           			[TD]7893[/TD]
           			[TD]debug[/TD]
           			[TD]************Trigger -> E1 Server An- und Abmeldung*****************************************************************************************[/TD]
           		[/TR]
          [TR]
          [TD]2017-09-10 14:42:12[/TD]
           			[TD]114729[/TD]
           			[TD]7893[/TD]
           			[TD]debug[/TD]
           			[TD]An CCU2 angemeldet:192.168.24.84/shared/php/HOMEMATIC-EDOMI-Master-XML-RPC-Server.php[/TD]
           		[/TR]
          [TR]
          [TD]2017-09-10 14:42:12[/TD]
           			[TD]115297[/TD]
           			[TD]7893[/TD]
           			[TD]debug[/TD]
           			[TD]LBS ID 997 in File: /usr/local/edomi/www/shared/php/HOMEMATIC-EDOMI-Master-daten-edomi_lbs.data['Master'] geschrieben[/TD]
           		[/TR]
          [TR]
          [TD]2017-09-10 14:42:12[/TD]
           			[TD]115729[/TD]
           			[TD]7893[/TD]
           			[TD]debug[/TD]
           			[TD]__________________________________________________Trigger E1 ENDE _________Laufzeit: 0.042802sec___________________________[/TD]
           		[/TR]
          [TR]
          [TD]2017-09-10 14:45:00[/TD]
           			[TD]210689[/TD]
           			[TD]9840[/TD]
           			[TD]debug[/TD]
           			[TD]************Trigger -> E3 Server Reinitialisierung_�berpr�fung_auf_aktualit�t**************************************************************[/TD]
           		[/TR]
          [TR]
          [TD]2017-09-10 14:45:00[/TD]
           			[TD]222405[/TD]
           			[TD]9840[/TD]
           			[TD]debug[/TD]
           			[TD]An CCU2 reinitialisiert, Events waren zu alt[/TD]
           		[/TR]
          [TR]
          [TD]2017-09-10 14:45:00[/TD]
           			[TD]222837[/TD]
           			[TD]9840[/TD]
           			[TD]debug[/TD]
           			[TD]__________________________________________________Trigger E5 ENDE __________Laufzeit: 0.0149sec__________________________[/TD]
           		[/TR]
          [/TABLE]
          Im Error-Log gibt es, seit dem es läuft, keine Einträge mehr.

          Andreas

          Kommentar


            #20
            Edomi hat die IP 192.168.24.84 und die CCU2 die IP 192.168.24.28 ? Ich weiß ich bin lästig.

            Sonst nochmal das Skript versuchen. Mit diesem Skript macht du eine reine Anfrage an die CCU2 und solltest eine Antwort bekommen.

            Das Skipt sollte wegen der homematic.class.php auf edomi ausgeführt werden.

            Rechte des Skrips setzen 777 !

            ev. Putty verwenden.

            Das ist eine einfache Abfrage, Anfrage > Server Antwortet.

            Kommentar


              #21
              Genau, Edomi hat die IP 192.168.24.84 und die CCU2 die IP 192.168.24.28

              Beim ausführen des Scripts bekomme ich (diesmal mit putty), folgende Antwort (0?)

              PHP_Script.JPG

              Rechte habe ich, wie von Dir empfohlen, auf 777 gesetzt.

              Kommentar


                #22
                Ok Status 0 bedeutet geschlossen

                dann sollte der lbs eigentlich auch funktionieren.

                ich sehe mir das noch an.

                Kommentar


                  #23
                  Eins noch im 19001250 die ip der ccu2 eintragen

                  Kommentar


                    #24
                    Die IP hatte ich schon von Anfang an drin. -> "192.168.24.28".

                    Kommentar


                      #25
                      OK, hab einen Bug gefunden muss beim Upload des LBS19001250 passiert sein. (Teil einer for Schleife)

                      Habe ihn Aktualisiert.

                      Den Master LBS werde ich auch noch aktualisieren. (fehlt nur eine Kleinigkeit am Debug, ist aber voll funktionsfähig)

                      Bitte Teste nochmal.

                      Kommentar


                        #26
                        Hab eben die aktuelle Version des LBS19001250 getestet, allerdings ohne Erfolg.

                        Kommentar


                          #27
                          So hab den Code im Downloadportal nochmal durchgesehen und mit meinem aktiven LBS verglichen.

                          Bei mir Funktioniert der LBS so.

                          Einzig die Umlaute werden vom Upload bis zum Download verändert. Bin leider noch nicht drauf gekommen woran das liegt. Scheint aber bei vielen LBSen ein Problem zu sein.

                          Gibt es eine Anleitung an die ich mich beim Veröffentlichen halten kann? Format des Skipts oder so.
                          Im Code verwende ich keine Umlaute, nur in den Code Kommentaren, von daher sollte es keine Probleme geben.


                          Hier noch mal die direkte kopie meines LBS der bei mir läuft.

                          Code:
                          ###[DEF]###
                          [name        = HM-Sec-RHS Fensterkontakt    ]
                          
                          [e#1        = Trigger #init=1    ]
                          [e#2        = IP                 ]
                          [e#3        = get Values #init=0]
                          [e#4        = HM Addresse         ]
                          [e#5        = debug #init=0        ]
                          
                          [a#1        = STATE             ]
                          [a#2        = ERROR (1 Fehler)  ]
                          [a#3        = LOWBAT (1 Low)    ]
                          
                          [v#1 = 0]        // E1 refresh für EXEC Teil
                          [v#3 = 0]        // E3 refresh für EXEC Teil
                          ###[/DEF]###
                          
                          
                          ###[HELP]###
                          HM-Sec-RHS Fensterkontakt
                          von Gernot Klobucaric (murelli146)
                          
                          Dieser Baustein setzt den LBS 19000925 HOMEMATIC-EDOMI-Master voraus.
                          
                          E1 Trigger: Wird mit 1 initialisiert und startet bei Projektaktivierung die Anmeldung der LBS Ausgänge im Master.
                          E2 IP der CCU2
                          E3 Bei Triggerung werden die Werte manuell von der CCU2 abgefragt.
                          E4 Homematic Geräte Addresse ohne Kanalangabe z.B. LEQ0142xxx von der Homematic WebUI (ohne Kanal also ':1')
                          E5 Debug 0 AUS / 1 Ein
                          
                          State:
                          0 = CLOSED
                          1 = TILTED
                          2 = OPEN
                          
                          Ausgänge 1 - 3 enthalten die aktuellen Werte.
                          
                          V1.00
                          ###[/HELP]###
                          
                          
                          ###[LBS]###
                          <?
                          function LB_LBSID($id)
                          {
                              if ($E=logic_getInputs($id))
                              {
                                  if (getLogicElementStatus($id)==0)                //LBS läuft nicht?
                                  {
                                      if ($E[1]['refresh']==1)                     // Ausgänge an HOMEMATIC-EDOMI-Master anmelden
                                      {
                                          setLogicElementVar($id,1,1);
                                          callLogicFunctionExec(LBSID,$id);        //EXEC-Script starten
                                      }
                                      elseif ($E[3]['refresh']==1)                 // Werte von der CCU2 manuell abfragen
                                      {
                                          setLogicElementVar($id,3,1);
                                          callLogicFunctionExec(LBSID,$id);        //EXEC-Script starten
                                      }
                                  }
                              }
                          }
                          ?>
                          ###[/LBS]###
                          
                          
                          ###[EXEC]###
                          <?
                          require(dirname(__FILE__)."/../../../../main/include/php/incl_lbsexec.php");
                          include '/usr/local/edomi/main/include/php/homematic.class.php';
                          /*****************************************************************************************************************************************************
                          
                              HM-Sec-RHS Fensterkontakt
                                  Date        : 24.08.2017
                                  Version        : 1.00
                                  Autor        : (c)2017 Gernot Klobucaric
                                  Kontakt        : knx-user-forum.de
                                  Member        : murelli146
                          
                          *****************************************************************************************************************************************************/
                          sql_connect();
                          
                          // Initialisierung
                          $E=getLogicEingangDataAll($id);                        //aktuellen Daten aller Eingänge in $E schreiben
                          $ip=$E[2]['value'];                                 //CCU2 IP Adresse
                          $port='2001';                                       //CCU2 Port
                          $loglevel=$E[5]['value'];                           //Loglevel 0=Aus 1>=Ein
                          $address=$E[4]['value'].':1';                       //HM Addresse und Kanal
                          
                          $name_customlog='HM-Sec-RHS_LBS_19000927_ID'.$id;                                                    // Pfad der Customlog Datei
                          $pfad_lbs_data='/usr/local/edomi/www/shared/php/HOMEMATIC-EDOMI-Master-daten-edomi_lbs.data';        // Pfad zum LBS Ausgangsregister
                          $api=new HomeMaticUpnpDevice($ip.':'.$port);
                          
                          /*****************************************************************************************************************************************************
                          
                              Ausgänge an HOMEMATIC-EDOMI-Master anmelden
                              bzw. Werte von der CCU2 manuell abfragen.
                          
                          *****************************************************************************************************************************************************/
                          //Ausgänge anmelden
                          if (getLogicElementVar($id,1)==1)
                          {
                              $lbs_register=File_Get_Array_From_JSON($pfad_lbs_data);
                              $lbs_register[$id][0]=array($id,1,$address,'STATE');
                              $lbs_register[$id][1]=array($id,2,$address,'ERROR');
                              $lbs_register[$id][2]=array($id,3,$address,'LOWBAT');
                              File_Put_Array_As_JSON($pfad_lbs_data, $lbs_register);
                              logging('Ausgänge HOMEMATIC-EDOMI-Master registriert');
                              setLogicElementVar($id,1,0);
                          }
                          //Werte von der CCU2 manuell abfragen
                          if (getLogicElementVar($id,3)==1)
                          {
                              $api=new HomeMaticUpnpDevice($ip.':'.$port);
                              $outputs[1]=bool2int($api->HM_getValue ($address, 'STATE'));
                              $outputs[2]=$api->HM_getValue ($address, 'ERROR');
                              $outputs[3]=bool2int($api->HM_getValue ($address, 'LOWBAT'));
                          
                              for($i=0; $i<count($outputs); $i++)
                              {
                                  $out=$i+1;
                                  setLogicLinkAusgang($id,$out,$outputs[$out]);
                                  logging("setLogicLinkAusgang($id,$out,$outputs[$out])");
                              }
                              setLogicElementVar($id,3,0);
                          }
                          
                          sql_disconnect();
                          
                          /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
                          /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ EXEC LBS ENDE +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
                          /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
                          
                          /*****************************************************************************************************************************************************
                          
                              Funktionen:
                              bool2int(variable)                                          | Prüft eine variable ob boolisch und setzt die Type ggf. auf int
                              logging(Nachricht,Array)                                    | Edomi Logging
                              File_Put_Array_As_JSON('/Pfad/Datei',Inhalt_Array)          | Schreiben eines Arrays in eine Datei
                              File_Get_Array_From_JSON('/Pfad/Datei')                     | Lesen eines Arrays von einer Datei
                          
                          *****************************************************************************************************************************************************/
                          //Prüft eine variable ob boolisch und setzt die Type ggf. auf int
                          function bool2int($var)
                          {
                              if (is_bool($var))
                              {    //Typenänderung bei bool auf int
                                  settype($var,'int');
                                  return $var;
                              }
                              else
                              {
                                  return $var;
                              }
                          }
                          //Edomi Logging
                          function logging( $msg, $var = NULL)
                          {
                              global $loglevel;
                              global $name_customlog;
                              if ($loglevel > 0)
                              {
                                  writeToCustomLog($name_customlog,'debug',$msg);
                                  if (isset($var))
                                  {
                                      writeToCustomLog($name_customlog,'debug',json_encode($var));
                                  }
                              }
                          }
                          //Schreiben eines Arrays in eine Datei
                          function File_Put_Array_As_JSON($FileName, $ar)
                          {
                              return file_put_contents($FileName, json_encode($ar));
                          }
                          //Lesen eines Arrays von einer Datei
                          function File_Get_Array_From_JSON($FileName)
                          {
                              if (! is_file($FileName))
                              {
                                  logging( "Fatal: Die Datei $FileName gibt es nicht.");
                                  return;
                              }
                              if (! is_readable($FileName))
                              {
                                  logging( "Fatal: Die Datei $FileName ist nicht lesbar.");
                                  return;
                              }
                              return json_decode(file_get_contents($FileName), true);
                          }
                          ?>
                          ###[/EXEC]###

                          Kommentar


                            #28
                            Andreas

                            Bitte nach der Projektaktivierung einmal den E3 triggern und log posten.

                            Wenn die Ausgänge gesetzt werden dann ist alles OK.

                            Kommentar


                              #29
                              Guten Morgen Gernot,

                              ich werde es heute Abend testen und berichten.

                              Andreas

                              Kommentar


                                #30
                                Habe es mit meiner bestehenden Installation, sowie mit einer frisch aufgesetzten VM getestet, mit den gleichen Ergebnis wie vorher.
                                Über den trigger auf den getValue Eingang am Fensterkontakt-Baustein, werden die Ausgänge aktualisiert.
                                Was nicht funktioniert ist das automatische setzten der Ausgänge nach Statusänderung über den HM-Master Baustein.

                                Hier das Log aus dem Fensterkontakt-Baustein:
                                Code:
                                 [TABLE="class: log, border: 0, cellpadding: 0, cellspacing: 0, width: 0, height: 12"]
                                [TR]
                                [TD]Zeitstempel[/TD]
                                 			[TD]ms[/TD]
                                 			[TD]PID[/TD]
                                 			[TD]LogLevel[/TD]
                                 			[TD]Meldung[/TD]
                                 		[/TR]
                                [TR]
                                [TD]2017-09-11 16:22:53[/TD]
                                 			[TD]090461[/TD]
                                 			[TD]1994[/TD]
                                 			[TD]debug[/TD]
                                 			[TD]Ausg�nge HOMEMATIC-EDOMI-Master registriert[/TD]
                                 		[/TR]
                                [TR]
                                [TD]2017-09-11 16:23:59[/TD]
                                 			[TD]819679[/TD]
                                 			[TD]2069[/TD]
                                 			[TD]debug[/TD]
                                 			[TD]setLogicLinkAusgang(2,1,2)[/TD]
                                 		[/TR]
                                [TR]
                                [TD]2017-09-11 16:23:59[/TD]
                                 			[TD]820209[/TD]
                                 			[TD]2069[/TD]
                                 			[TD]debug[/TD]
                                 			[TD]setLogicLinkAusgang(2,2,0)[/TD]
                                 		[/TR]
                                [TR]
                                [TD]2017-09-11 16:23:59[/TD]
                                 			[TD]820763[/TD]
                                 			[TD]2069[/TD]
                                 			[TD]debug[/TD]
                                 			[TD]setLogicLinkAusgang(2,3,0)[/TD]
                                 		[/TR]
                                [/TABLE]

                                Kommentar

                                Lädt...
                                X