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

  • Kirbsi
    antwortet
    Zitat von blaky Beitrag anzeigen

    Die WH3000SE reagiert meines Wissens nicht auf den Abrufbefehl
    Hat das mal einer mit der WH3000SE getestet?
    Weil die ELV980WS die Auẞeneinheit von der WH3000SE hat.
    Zuletzt geändert von Kirbsi; 05.10.2020, 20:47.

    Einen Kommentar schreiben:


  • Langer89
    antwortet
    Moin zusammen,

    ich habe bei den anderen grünen im Forum eine Beschreibung gefunden wie die von dem WIfi-Server die Daten abrufen... Michael85 Ggf. funktioniert das auch mit deinem USB-Dongle`?

    https://www.loxwiki.eu/display/LOXBERRY/FOSHKplugin

    Gruß Henrik

    Edit: Hier gibt es den Foreneintrag dazu mit generischem Plugin für andere Hausautomatisierungen:
    https://www.loxforum.com/forum/proje...w1000-anbinden

    Ggf. kann man daraus was für einen Edomi-LBS ableiten 🙄?
    Zuletzt geändert von Langer89; 20.04.2020, 14:02.

    Einen Kommentar schreiben:


  • Michael85
    antwortet
    Heute ist der USB-Dongle angekommen. Man kann dort auch seinen eigenen Server einstellen.

    Anscheinend werden die Daten per http gesendet. So wirklich nach vollziehen konnte ich es aber noch nicht.

    Code:
    pi@raspberrypi:~ $ sudo nc -lv 8080
    Listening on [0.0.0.0] (family 2, port 8080)
    Connection from ESP-A02372.fritz.box 7425 received!
    POST /data/report/ HTTP/1.1
    HOST: 192.168.1.51
    Connection: Close
    Content-Type: application/x-www-form-urlencoded
    Content-Length: 185
    
    PASSKEY=2257B0199F05CAC28CBE1BFF5004292A&stationty pe=GW1000A_V1.5.7&dateutc=2020-04-17+20:19:30&tempinf=70.7&humidityin=43&baromrelin= 29.949&baromabsin=29.949&freq=868M&model=GW1000_Pr o
    Ich habe nur mit dem Grundmodul mit einem Raspberry diese Daten abgefangen. Wie bekomme ich diese jetzt in Edomi um diese dann zu zerlegen?

    Einen Kommentar schreiben:


  • Langer89
    antwortet
    Zitat von Michael85 Beitrag anzeigen

    besteht eigentlich die Möglichkeit den DP1500 mit Bodenfeuchtesensoren abzurufen?
    Das ist eine gute Frage. Wenn der DP1500 auch kompatibel wäre, könnte man neben der WH4000SE Außeneinheit noch weitere Sensoren anbinden. Für mich wäre es auch sinnvoller den Wifi-Server zu nutzen, da ich das Display der WH4000SE eh nich benötige.
    blaky Hast du irgendwie eine API-Beschreibung o.Ä.? Oder einfach via Netzwerkmitschnitt die Daten rausgefummelt?

    Gruß
    Henrik

    Einen Kommentar schreiben:


  • Michael85
    antwortet
    Hallo,

    besteht eigentlich die Möglichkeit den DP1500 mit Bodenfeuchtesensoren abzurufen?

    Steht als Projekt demnächst an und ich es wäre natürlich schön die Daten auch über einen LBS abzurufen.

    Gruß Michael

    Einen Kommentar schreiben:


  • Brick
    antwortet
    Hi,

    nein... das geht mit dieser Wetterstation nicht.. denke ich.. Man könnte es aber indirekt machen,
    den die Station überträgt ja alle paar Sek. die Werte nach Edomi. Wenn sich da die Regenmenge
    ändert zum Wert davor, wird es wohl regnen. Das wird aber sicher nicht so Sensibel sein, wie
    ein Regensensor.
    Da es in der letzten Woche eigentlich nicht geregnet hat, kann ich hierzu aber noch nichts sagen.

    Gestern hat es mal 15 Tropfen runtergehauen, das hat die Station nicht erkannt.

    Gruß Martin

    Einen Kommentar schreiben:


  • Langer89
    antwortet
    Brick wie ist dein Fazit nach einer Woche Betrieb :-) ? Gibt es die Möglichkeit auszuwerten ob es im Moment gerade regnet(Fenster noch offen)? Der LBS haut ja nur den Niederschlag der letzten Stunde raus....

    einen schönen Start in die kurze Woche!

    Einen Kommentar schreiben:


  • Brick
    antwortet
    scheint jetzt zu passen... alle Fehler landen jetzt im Customlog !

    Merci Jonofe (mal wieder !)

    Einen Kommentar schreiben:


  • Brick
    antwortet
    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..


    Einen Kommentar schreiben:


  • jonofe
    antwortet
    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.

    Einen Kommentar schreiben:


  • Brick
    antwortet
    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

    Einen Kommentar schreiben:


  • Brick
    antwortet
    Ok.. vielen Dank.. probier ich aus..

    Wie gesagt.. bin kein Programmierer !!

    Einen Kommentar schreiben:


  • jonofe
    antwortet
    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);

    Einen Kommentar schreiben:


  • Brick
    antwortet
    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;
    }

    Einen Kommentar schreiben:


  • blaky
    antwortet
    ich bau das bei gelegenheit mal ein..

    Einen Kommentar schreiben:

Lädt...
X