Ankündigung

Einklappen
Keine Ankündigung bisher.

LBS 19001874 - Wetterdaten einer Froggit WH4000SE / ELV 980WS

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

    #46
    Zitat von McEgg Beitrag anzeigen
    Ist die für euch mit dem LBS eine Alternative zu einer echten KNX Wetterstation?
    Für mich sind 3 Helligkeitssensoren für Ost/Süd/West Pflicht. Daher würde ich sie eher als zusätzliche Option für weitere Messwerte zusätzlich zu einer KNX Wetterstation sehen. Ich muss zugeben, ich habe mit das Produktdatenblatt nur oberflächlich angesehen, aber ich vermute die Froggit hat nur einen Helligkeitssensor.
    Bevor man keine Wetterstation hat, macht eine günstige Wetterstation natürlich dennoch Sinn.

    Kommentar


      #47
      Also ich hab, bzw. hatte bis jetzt keine Wetterstation und hab mir auch überlegt die MDT zu holen. Aber eigentlich hat die Froggit schon auch Vorteile.

      1. Läuft autark. Brauch kein Buskabel usw. Ich bin am Installationstag etwas übers Gelände gelaufen und hab geschaut, wo ich sie am besten Montieren kann. Das ist mit einem Buskabel schwer.
      2. Preislich
      3. Regenmengensensor

      Nachteile:
      1. keine 3 Helligkeitssensoren, sondern nur einer. Wobei ich aktuell als "kein KNX Wetterstationsbesitzer" den Vorteil nicht benötige.. Hab auch nur eine Fassade mit Jalousie und bei den Rollos verschatte ich nicht...
      2. Kein Binärkontakt für Regen/kein Regen (find ich jetzt aber auch nicht sooo wichtig.
      3. Innenstation. Auch hier zieh ich aber sogar einen Vorteil. Die steht bei mir in der Speis und jetzt weiß ich a, wie warms darin ist und b, welche Luftfeuchtigkeit darin hab. Diese Info hatte ich vorher nicht.

      Also ich bin bis jetzt sehr zufrieden damit... die Werte sehen plausibel aus. Auch wenn man für das Geld sicher kein Präzisionsmessgerät erwarten darf. Aber das weiß man ja bei der KNX Version auch nicht.

      Einzig was mich aktuell noch etwas stört, ist beim LBS, hier bekomm ich regelmäßig folgenden Fehler ins Log:

      Code:
       [TABLE="border: 0, cellpadding: 0, cellspacing: 0"]
       	 		[TR]
       			[TD]2020-04-07 12:53:01[/TD]
       			[TD]177417[/TD]
       			[TD]?[/TD]
       			[TD]24987[/TD]
       			[TD]Datei: /usr/local/edomi/www/data/liveproject/lbs/EXE19001874.php | Fehlercode: 2 | Zeile: 54 | socket_recv(): unable to read from socket [11]: Resource temporarily unavailable[/TD]
       			[TD]ERROR[/TD]
       		[/TR]
       	 [/TABLE]
      Jemand ne Idee wie ich das abstellen kann ?

      Das scheint die Zeile zu sein, die daran "Schuld" ist:

      Code:
       /* Empfange Daten 82 Bytes */
      $rxlen = socket_recv($socket, $RX, 82, MSG_WAITALL);
      }
      hab mal danach gegoogelt und es auf :
      Code:
       /* Empfange Daten 82 Bytes */
      if (false !== ($rxlen = socket_recv($socket, $RX, 82, MSG_WAITALL))) {
      logging($id, 'Socket receive from ' . $IP . 'Port: ' . $Port . ' erfolgreich!');
      } else {
      logging($id, 'Socket receive from ' . $IP . 'Port: ' . $Port . ' fehlgeschlagen!');
      }
      }
      geändert.. das half aber nicht..

      Grundsätzlich wärs mir ja egal wenn da hin und wieder die Werte nicht übertragen werden.. nur Fehler im Log mag ich halt nicht haben...
      Die Selbsthilfegruppe "UTF-8-Probleme" trifft sich diesmal abweichend im groüen Saal.

      Kommentar


        #48
        Zitat von Brick Beitrag anzeigen
        Jemand ne Idee wie ich das abstellen kann ?
        Ja, SO, dann landet es im LBS Logfile.

        Kommentar


          #49
          Zitat von jonofe Beitrag anzeigen

          Ja, SO, dann landet es im LBS Logfile.
          Ok.. das biegt die Fehlermeldungen ins Custom Log um...

          Gibts auch ne Möglichkeit (sorry für die vielleicht blöde Frage, aber ich bin halt kein Programmierer)... zu sagen. Wenn du beim Receive nix bekommst, dann is schon gut, dann mach halt einfach nix !

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

          Kommentar


            #50
            Klar, einfach den MyErrorHandler() leer lassen. Macht aber irgendwie wenig Sinn. Wenn dann irgendwann gar nichts mehr kommt, dann kommt der Post: "Bekomme keine Daten mehr, sehe aber keine Fehler im Log."

            Kommentar


              #51
              Hab jetzt nur den Code von deinem Link in den LBS kopiert wars noch nicht...
              Muss hierzu Debug im LBS aktiv sein, damit die Meldung nicht mehr kommt ? Vermutlich ja, oder ?

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

              Kommentar


                #52
                Nein, du musst error_off(); an der Stelle aufrufen, wo das Errorhandling umgeleitet werden soll und nach den entsprechenden Befehlen dann wieder error_on();

                In deinem Fall also vor/nach dem socket_recv()

                Kommentar


                  #53
                  ich bau das bei gelegenheit mal ein..

                  Kommentar


                    #54
                    Zitat von jonofe Beitrag anzeigen
                    In deinem Fall also vor/nach dem socket_recv()
                    jetzt bekomm ich zwar im Customlog einen Fehler gemeldet:
                    Code:
                     [TABLE="border: 0, cellpadding: 0, cellspacing: 0"]
                     	 		[TR]
                     			[TD]2020-04-08 12:12:48[/TD]
                     			[TD]858167[/TD]
                     			[TD]720[/TD]
                     			[TD]INFO:[/TD]
                     			[TD]Received Hex: ffff0b0050040100bb0200c90300260400c90500c906240722 0825ff0925ff0a00f70b00070c000a0e000000001000000000 110000000012000000001300000000140000000015000e0362 160abe1707107b[/TD]
                     		[/TR]
                     		[TR]
                     			[TD]2020-04-08 12:13:09[/TD]
                     			[TD]432965[/TD]
                     			[TD]959[/TD]
                     			[TD]INFO:[/TD]
                     			[TD]Connection succesfull to: 192.168.178.69 Port: 45000[/TD]
                     		[/TR]
                     		[TR]
                     			[TD]2020-04-08 12:13:11[/TD]
                     			[TD]455487[/TD]
                     			[TD]959[/TD]
                     			[TD]INFO:[/TD]
                     			[TD]dont receive needed 82 Bytes![/TD]
                     		[/TR]
                     		[TR]
                     			[TD]2020-04-08 12:13:30[/TD]
                     			[TD]045974[/TD]
                     			[TD]1191[/TD]
                     			[TD]INFO:[/TD]
                     			[TD]Connection succesfull to: 192.168.178.69 Port: 45000[/TD]
                     		[/TR]
                     	 [/TABLE]
                    aber im Fehlerlog erscheint trotzdem noch der Fehler.

                    Code:
                     [TABLE="border: 0, cellpadding: 0, cellspacing: 0"]
                     	 		[TR]
                     			[TD]2020-04-08 12:13:11[/TD]
                     			[TD]433284[/TD]
                     			[TD]?[/TD]
                     			[TD]959[/TD]
                     			[TD]Datei: /usr/local/edomi/www/data/liveproject/lbs/EXE19001874.php | Fehlercode: 2 | Zeile: 68 | socket_recv(): unable to read from socket [11]: Resource temporarily unavailable[/TD]
                     			[TD]ERROR 			[TABLE="border: 0, cellpadding: 0, cellspacing: 0"]
                     				 					[TR]
                     						[TD]2020-04-08 12:13:11[/TD]
                     						[TD]433284[/TD]
                     						[TD]?[/TD]
                     						[TD]959[/TD]
                     						[TD]Datei: /usr/local/edomi/www/data/liveproject/lbs/EXE19001874.php | Fehlercode: 2 | Zeile: 68 | socket_recv(): unable to read from socket [11]: Resource temporarily unavailable[/TD]
                     						[TD]ERROR[/TD]
                     					[/TR]
                     				 			[/TABLE]
                     			[/TD]
                     		[/TR]
                     	 [/TABLE]
                    Hab ich das Falsch eingefügt ?

                    Code:
                     if ($sc)
                    {
                    /* Send Abrufbefehl to socket */
                    socket_send($socket, $TX, strlen($TX), 0);
                    
                    [COLOR=#d35400]function error_off()
                    {
                    $error_handler = set_error_handler("myErrorHandler");
                    error_reporting(0);
                    }[/COLOR]
                    
                    /* Empfange Daten 82 Bytes */
                    $rxlen = socket_recv($socket, $RX, 82, MSG_WAITALL);
                    }
                    /* schließe Socket */
                    socket_close($socket);
                    }
                    [COLOR=#c0392b]function error_on()
                    {
                    restore_error_handler();
                    error_reporting(E_ALL);
                    }[/COLOR]
                    
                    
                    if ($rxlen == 82) //socket_recv erfolgreich
                    {
                    $RXHEX = bin2hex($RX);
                    
                    logging($id, 'Received Hex: ' . $RXHEX);
                    
                    // Vorzeichen Temp. Innen
                    if (substr($RXHEX, 14, 1) == 'f') {
                    $V3 = 65536;
                    } else {
                    $V3 = 0;
                    }
                    Die Selbsthilfegruppe "UTF-8-Probleme" trifft sich diesmal abweichend im groüen Saal.

                    Kommentar


                      #55
                      ja hast du.

                      Die Funktionen solltest du nicht mitten in der Logik definieren, sondern vorher oder danach.
                      In der Logik musst du sie aufrufen.

                      PHP-Code:
                      if ($sc)
                      {

                      error_off();

                      /* Send Abrufbefehl to socket */
                      socket_send($socket$TXstrlen($TX), 0);

                      /* Empfange Daten 82 Bytes */
                      $rxlen socket_recv($socket$RX82MSG_WAITALL);
                      }
                      /* schließe Socket */
                      socket_close($socket);
                      }

                      error_on();

                      if (
                      $rxlen == 82//socket_recv erfolgreich
                      {
                      $RXHEX bin2hex($RX);

                      logging($id'Received Hex: ' $RXHEX);

                      // Vorzeichen Temp. Innen
                      if (substr($RXHEX141) == 'f') {
                      $V3 65536;
                      } else {
                      $V3 0;



                      Und das hier am besten ganz unten im EXEC vor dem ?>

                      PHP-Code:
                      function myErrorHandler($errno$errstr$errfile$errline)
                      {
                      global 
                      $id;
                      logging($id"File: $errfile | Error: $errno | Line: $errline | $errstr ");
                      }

                      function 
                      error_off()
                      {
                      $error_handler set_error_handler("myErrorHandler");
                      error_reporting(0);
                      }

                      function 
                      error_on()
                      {
                      restore_error_handler();
                      error_reporting(E_ALL);

                      Kommentar


                        #56
                        Ok.. vielen Dank.. probier ich aus..

                        Wie gesagt.. bin kein Programmierer !!

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

                        Kommentar


                          #57
                          So... jetzt taucht die Meldung das die "Recource temporalily unavailable" ist tatsächlich im Custom Log auf...
                          Dafür kommt jetzt dann immer folgende Fehlermeldung im Fehlerlog:

                          Code:
                           [TABLE="border: 0, cellpadding: 0, cellspacing: 0"]
                           	 		[TR]
                           			[TD]2020-04-08 13:10:01[/TD]
                           			[TD]247555[/TD]
                           			[TD]?[/TD]
                           			[TD]6761[/TD]
                           			[TD]Datei: /usr/local/edomi/www/data/liveproject/lbs/EXE19001874.php | Fehlercode: 8 | Zeile: 171 | Undefined variable: RXHEX[/TD]
                           			[TD]ERROR[/TD]
                           		[/TR]
                           		[TR]
                           			[TD]2020-04-08 14:12:00[/TD]
                           			[TD]933038[/TD]
                           			[TD]?[/TD]
                           			[TD]15968[/TD]
                           			[TD]Datei: /usr/local/edomi/www/data/liveproject/lbs/EXE19001874.php | Fehlercode: 8 | Zeile: 160 | Undefined variable: RXHEX[/TD]
                           			[TD]ERROR[/TD]
                           		[/TR]
                           	 [/TABLE]
                          Das sind immer die Zeiten an denen dann die Meldung ans Customlog geschickt wurde..

                          Wieso findet er da die RXHEX nicht mehr ?

                          Kann das sein, das er hier:
                          PHP-Code:
                           $a3 = (hexdec(substr($RXHEX144)) - $V3) / 10// Temp. Innen
                          $a4 = (hexdec(substr($RXHEX204)) - $V4) / 10// Temp. Außen
                          $a5 = (hexdec(substr($RXHEX264)) - $V5) / 10// Taupunkt
                          $a6 = (hexdec(substr($RXHEX324)) - $V6) / 10// Windchill
                          $a7 = (hexdec(substr($RXHEX384)) - $V7) / 10// Hitzeindex
                          $a8 hexdec(substr($RXHEX442)); // Luftfeuchte innen
                          $a9 hexdec(substr($RXHEX482)); // Luftfeuchte außen
                          $a10 hexdec(substr($RXHEX524)) / 10// Luftdruck absolut
                          $a11 hexdec(substr($RXHEX584)) / 10// Luftdruck relativ
                          $a12 hexdec(substr($RXHEX644)); // Windrichtung
                          $a13 = (hexdec(substr($RXHEX704)) / 10) * 3.6// Windgeschwindigkeit km/h
                          $a14 = (hexdec(substr($RXHEX764)) / 10) * 3.6// Böen km/h
                          $a15 hexdec(substr($RXHEX828)) / 10// Regen h
                          $a16 hexdec(substr($RXHEX928)) / 10// Regen T
                          $a17 hexdec(substr($RXHEX1028)) / 10// Regen W
                          $a18 hexdec(substr($RXHEX1128)) / 10// Regen M
                          $a19 hexdec(substr($RXHEX1228)) / 10// Regen Jahr
                          $a20 hexdec(substr($RXHEX1328)) / 10// Regen Total
                          $a21 hexdec(substr($RXHEX1428)) / 10// Lichtstärke lux
                          $a22 hexdec(substr($RXHEX1524)); // UV Strahlung
                          $a23 hexdec(substr($RXHEX1582)); // UV Index 
                          Dann bestimmte Werte einfach nicht mehr findet, da die Fehlermeldung einmal Zeile 171 und einmal Zeile 160 angibt ?
                          Wenn hier also die Werte nicht vorhanden sind, kann ers evlt. nicht umwandeln und spukt deswegen eine Fehlermeldung aus..

                          Ich werd mal das "Error on" im Code weiter nach unten setzen !

                          Gruß Martin

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

                          Kommentar


                            #58
                            Zitat von Brick Beitrag anzeigen
                            Kann das sein, das er hier:
                            Wie er schreibt, ist er in Zeile 160 und 171. Zählen musst du ab der ersten Zeile hinter ###[EXEC]###.

                            Es sollte ein entsprechendes Error Handling eingebaut werden, d.h. nur wenn der Abruf erfolgreich war, sollte die Verarbeitung der Daten ausgeführt werden. Alles andere mit error_on() und error_off() ist Gefrickel.

                            Kommentar


                              #59
                              Seh ich auch so...

                              ich zähl mal.. hmm.. ne.. des passt irgendwie nicht zu meiner Vermutung...

                              Zeile 160 = logging($id, 'dont receive needed 82 Bytes!'. $RXHEX);
                              wobei das .$RXHEX hab ich da eingefügt weil ich das im Log haben wollte, um zu wissen was da ankommt, wenn es mal nicht funktioniert.
                              Zeile 171 = $error_handler = set_error_handler("myErrorHandler");
                              im Error_off was er da mit dem $RXHEX will, weiß ich nicht.

                              Ich schau mal ob ich noch was rausfinde..


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

                              Kommentar


                                #60
                                scheint jetzt zu passen... alle Fehler landen jetzt im Customlog !

                                Merci Jonofe (mal wieder !)
                                Die Selbsthilfegruppe "UTF-8-Probleme" trifft sich diesmal abweichend im groüen Saal.

                                Kommentar

                                Lädt...
                                X