Wetterstation Eltako MS / Elsner P03 - RS485

Alle zusätzlichen Module, die in die Solaranzeige integriert wurden, wie den Wetterbericht, die Solarprognose, der Messenger Pushover, Sun & Moon, dynamische Strompreise und weitere Module.

Moderator: Ulrich

retsam
Beiträge: 24
Registriert: So 12. Mai 2024, 10:18

Wetterstation Eltako MS / Elsner P03 - RS485

Beitrag von retsam »

Guten Morgen ZUsammen,
seit 3 Jahren läuft der Eltako Multisensor bei mir und steuert die Rolladen über relais.
Nun habe ich mich in den vergangenen zwei Wochen damit befasst:

- Welcher Typ Wetterstation
- Welcher Bus Typ
- Welche Baureihe

Herausgekommen ist, dass die Eltako Wetterstation baugleich der Elsner P03 mit Rs485 Bus ist und ich diesen ganzen Eltako Bus / En Ocean Gateway garnicht benötige.
Das Auslesen klappt mittels Elsnersoftware ebenfalls sehr gut (siehe Screenshot).

Mein Ziel ist es die Daten
- In Influx zu Speichern
- Grafana Darzustellen
- Daten an die Rolladensteuerung zu senden um die Rolläden Tagsüber ebenfalls automatisch herunter zu fahren.

Lösungsansatz währe hier eine PHP abfrage.
Diese sieht bislang wie folgt aus:

Code: Alles auswählen


<?php
error_reporting(E_ALL);
ini_set('display_errors', true);
$handle = fopen( '/dev/ttyUSB0', 'r' ); 
$tagid = fgets( $handle ); # Read data from device
print $tagid; # Display data
fclose ($handle);
Als Ergebnis bekomme ich Fehler im Webbroser angezeigt.

Bin ich mit dem Thema hier richtig?

Grüße
Sebastian
Dateianhänge
Screenshot 2025-01-18 110738.png

retsam
Beiträge: 24
Registriert: So 12. Mai 2024, 10:18

Re: Wetterstation Eltako MS / Elsner P03 - RS485

Beitrag von retsam »

Guten Morgen Zusammen,
anbei ein kleines Update und eine kleine Beschreibung zum vorgehen für die Eltako / Elsner Wetterstation.

Nochmals zum Hintergrund: Bei uns zu Hause werkelt ein Eltako Multisensor, der wie vormals beschrieben "angeblich" nur mit Enocean funktionieren sollte, da dieser Baugleich zur Elsner Version ist und der Raspberry mit Solaranzeige die "Boardmittel" mitbringt sowie 24/7 läuft wollte ich die Informationen nutzen für die ein oder andere Steuerung.
Datenblatt der Elsner nun im Anhang.

Folgende Schritte sind nötig um die Wetterstation ans laufen zu bekommen.

1. Ser2Net installieren und Konfigurieren

Code: Alles auswählen

sudo apt install ser2net
Die neue Version von Ser2Net startet als Dienst. Nach der Installation prüfen ob der Dienst läuft.

Code: Alles auswählen

systemctl status ser2net
Dies Ausgabe sollte im Idealfall wie folgt aussehen:

Code: Alles auswählen

pi@raspberrypi:~ $ systemctl status ser2net
● ser2net.service - Serial port to network proxy
     Loaded: loaded (/lib/systemd/system/ser2net.service; enabled; preset: enabled)
     Active: active (running) since Sun 2025-02-02 06:16:56 GMT; 29min ago
       Docs: man:ser2net(8)
   Main PID: 923 (ser2net)
      Tasks: 1 (limit: 767)
        CPU: 1min 4.531s
     CGroup: /system.slice/ser2net.service
             └─923 /usr/sbin/ser2net -n -c /etc/ser2net.yaml -P /run/ser2net.pid

Feb 02 06:16:56 raspberrypi systemd[1]: Starting ser2net.service - Serial port to network proxy...
Feb 02 06:16:56 raspberrypi systemd[1]: Started ser2net.service - Serial port to network proxy.
2. Ser2Net Konfigurieren - klingt einfach hat aber seine Tücken.

Bevor die Konfigurationsdatei angepasst wird, sollte kontrolliert werden wie die Schnittstelle genau heißt.

Code: Alles auswählen

ls -al /dev/serial/by-id
Die Ausgabe sollte ungefähr so aussehen:

Code: Alles auswählen

drwxr-xr-x 2 root root 60 Feb  2 05:57 .
drwxr-xr-x 4 root root 80 Feb  2 05:57 ..
lrwxrwxrwx 1 root root 13 Feb  2 05:57 usb-1a86_USB_Serial-if00-port0 -> ../../ttyUSB0
Nachdem nun die Schnittstelle "erkannt" wurde, nutzen wir die Informationen für die Konfiguration von Ser2Net.
Die Datei bzw. Ser2Net ist sehr empfindlich ein Leerzeichen an der falschen Stelle führt direkt zu einem Fehler!!
Mit dem Editor die Konfigurationsdatei öffnen:

Code: Alles auswählen

sudo nano /etc/ser2net.yaml

Code: Alles auswählen

%YAML 1.1
---
# This is a ser2net configuration file, tailored to be rather
# simple.
#
# Find detailed documentation in ser2net.yaml(5)
# A fully featured configuration file is in
# /usr/share/doc/ser2net/examples/ser2net.yaml.gz
#
# If you find your configuration more useful than this very simple
# one, please submit it as a bugreport

#define: &banner \r\nser2net port \p device \d [\B] (Debian GNU/Linux)\r\n\r\n
#connection: &con0096
#accepter: tcp,localhost,2000
#enable: on
#options:
#banner: *banner
#kickolduser: true
#connector: serialdev,/dev/ttyUSB0,19200n81,local

connection: &firmata
    accepter: localhost,2000
    connector: serialdev,/dev/serial/by-id/usb-1a86_USB_Serial-if00-port0,1920081n,local
    options:
     kickolduser: true # Leerzeichen nötig
     max-connections: 3 # Leerzeichen nötig
In der original Config-Datei sind mehrere Beispiele. Diese wurden der gelöscht, da nicht benötigt.
Sollte irgendwo ein Leerzeichen zu viel sein, oder ein Sintaxfehler so lautet die Fehlermeldung beim Start vom Ser2Net Dienst:

Code: Alles auswählen

pi@raspberrypi:~ $ systemctl status ser2net
● ser2net.service - Serial port to network proxy
     Loaded: loaded (/lib/systemd/system/ser2net.service; enabled; preset: enabled)
     Active: active (running) since Sun 2025-02-02 07:00:06 GMT; 4s ago
       Docs: man:ser2net(8)
   Main PID: 1211 (ser2net)
      Tasks: 1 (limit: 767)
        CPU: 23ms
     CGroup: /system.slice/ser2net.service
             └─1211 /usr/sbin/ser2net -n -c /etc/ser2net.yaml -P /run/ser2net.pid

Feb 02 07:00:06 raspberrypi systemd[1]: ser2net.service: Main process exited, code=exited, status=1/FAILURE
Feb 02 07:00:06 raspberrypi systemd[1]: ser2net.service: Failed with result 'exit-code'.
[u]Feb 02 07:00:06 raspberrypi ser2net[1211]: /etc/ser2net.yaml:24(column 12): Unexpected scalar value
Feb 02 07:00:06 raspberrypi ser2net[1211]: /etc/ser2net.yaml:24(column 12): Unexpected scalar value[/u]
Feb 02 07:00:06 raspberrypi systemd[1]: Stopped ser2net.service - Serial port to network proxy.
Feb 02 07:00:06 raspberrypi systemd[1]: ser2net.service: Consumed 1min 5.412s CPU time.
Feb 02 07:00:06 raspberrypi systemd[1]: Starting ser2net.service - Serial port to network proxy...
Feb 02 07:00:06 raspberrypi systemd[1]: Started ser2net.service - Serial port to network proxy.
Die Konfigurationsdatei anpassen, den Fehler finden und dann mittels

Code: Alles auswählen

 sudo service ser2net restart
den Dienst neu starten.

Das Ergebnis sollte in etwa so aussehen:

Code: Alles auswählen

pi@raspberrypi:~ $ sudo service ser2net restart
pi@raspberrypi:~ $ systemctl status ser2net
● ser2net.service - Serial port to network proxy
     Loaded: loaded (/lib/systemd/system/ser2net.service; enabled; preset: enabled)
     Active: active (running) since Sun 2025-02-02 07:01:13 GMT; 2s ago
       Docs: man:ser2net(8)
   Main PID: 1223 (ser2net)
      Tasks: 1 (limit: 767)
        CPU: 27ms
     CGroup: /system.slice/ser2net.service
             └─1223 /usr/sbin/ser2net -n -c /etc/ser2net.yaml -P /run/ser2net.pid

Feb 02 07:01:13 raspberrypi systemd[1]: Starting ser2net.service - Serial port to network proxy...
Feb 02 07:01:13 raspberrypi systemd[1]: Started ser2net.service - Serial port to network proxy.
Kontrolle ob auf dem eingestellten Port gelauscht wird:

Code: Alles auswählen

pi@raspberrypi:~ $ sudo netstat -tlpena | grep -i 200
tcp        0      0 127.0.0.1:2000          0.0.0.0:*               LISTEN      0          1066665    1223/ser2net
tcp6       0      0 ::1:2000                :::*                    LISTEN      0          1066664    1223/ser2net
tcp6       0      0 2001:9e8:78c2:f700:4:22 2001:9e8:78c2:f70:58090 ESTABLISHED 0          6137       584/sshd: pi [priv]
tcp6       0      0 2001:9e8:78c2:f700:4:22 2001:9e8:78c2:f70:58699 ESTABLISHED 0          847541     1017/sshd: pi [priv
Sofern der Dienst läuft, kann nun Apache (sofern nicht schon vorhanden) sowie PHP installiert werden.
Damit ein Zugriff des Users: www-Data auf die Schnittstelle gelingt muss dieser noch in die Gruppe Dialout hinzugefügt werden.

Nun zum eigentlichen Akt, die Daten in Empfang nehmen und weiterverarbeiten.
Hier wurde nach viel "Suchen und Ausprobieren" ein "fertiges" PHP Script gefunden...
(Quelle: https://redaktion.knx-user-forum.de/wet ... ia-rs-485/]
Dies war bei mir nicht lauffähig und hat div. Fehler ausgespuckt.
Interessant ist jedoch, dass die Checksummen oder andere Berechnungen schon implementiert sind.
Weiterhin ist hier ebenfalls eine Wichtige information enhalten, welche mir durchgegangen ist, jedes Signal von der Wetterstation beginnt mit einem "W".

Anbei der Erste Schritt vom "neuen" PHP Script womit zumindest kontrolliert werden kann welche Daten ankommen.
Da der Bus alle 3 Sekunden ein Signal sendet, ist ebenfalls eine Laufzeitberechnung für den Test mit drin.
Dies führt dazu, dass die Ergebnisse des PHP Skripes stellenweise nicht plausibel sind..

Code: Alles auswählen

<?php
$beginn = microtime(true);
//$string = "Hallo Schnittstelle!\n";
//$pointer = fopen("/dev/ttyUSB0","r","19200");

$pointer = fsockopen("localhost","2000");
//fwrite ($pointer, $string);
//$char = fgetc($pointer);
$i=0;
        while(!feof($pointer))
                {
                $char =fgetc($pointer);
                $str[$i] = $char;
//}
                if ($i<45)
                        {
                        echo "Zaehler: $i \n </br>";
                        //echo "char ausgabe: $char \n </br>";
                        echo "string ausgabe: $str[$i] </br> \n \n \n";
                        $i=($i+1);
                        continue;

//echo $i;
//echo "finished \n \n \n";
//echo $char;
//fwrite($pointer);
//fclose($pointer);
                        }
                if ($i==45)
                        {
                                break;
                                fclose($pointer);
                        }
                //$i=(i+1);
}
$dauer = microtime(true) - $beginn;
echo "Verarbeitung des Skripts: $dauer Sek.";
?>
Dies zum aktuellen Stand.
Weiteres vorgehen:
Implementierung der Abfrage "W" (dies klappt aktuell noch nicht)
Dann die Daten zusammenfassen und in eine Datenbank schreiben.

Sofern dies alles klappt, dann versuchen das Skript auf der Solaranzeige zu implementieren.

Vielleicht habt Ihr Anregugen und Tipps, wie weiter vorgegangen werden kann.

Grüße
Retsam
Dateianhänge
30140_P033-RS485basic_Datenblatt.pdf
(670.89 KiB) 6-mal heruntergeladen

Benutzeravatar
Ulrich
Administrator
Beiträge: 6286
Registriert: Sa 7. Nov 2015, 10:33
Wohnort: Essen
Hat sich bedankt: 160 Mal
Danksagung erhalten: 935 Mal

Re: Wetterstation Eltako MS / Elsner P03 - RS485

Beitrag von Ulrich »

Die Wetterstation ist jetzt mithilfe von User retsam implementiert. Regler = 109
Vorher natürlich ein Update auf die Solaranzeige machen.
-----------------------------------------------------
Ulrich . . . . . . . . [ Admin ]

retsam
Beiträge: 24
Registriert: So 12. Mai 2024, 10:18

Re: Wetterstation Eltako MS / Elsner P03 - RS485

Beitrag von retsam »

Danke dir für die Hilfe Ulrich.

Zurück zu „Wetterdaten, Börsenstrompreise, Solarprognose, Nachrichtendienst usw.“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste