Modul WS3600 / Austausch zur WS3080

Begonnen von Brice, 29 Mai 2019, 14:55:10

Vorheriges Thema - Nächstes Thema

Brice

Da es für kurze Zeit die WS3080 günstig zu erwerben gab und der Thread im Bereich Anfängerfragen nicht geeignet ist, um Erfahrungen auszutauschen, eröffne ich dieses Thema.

Zitat von: Brice am 28 Mai 2019, 19:43:23
Kurze Rückmeldung:
Die WS3080 wurde am Sonnabend geliefert, seit heute werden Daten nach FHEM geliefert, ..... Eingebunden über pywws per livelog, die größten Schwierigkeiten hatte ich mit der weather.ini.

Die Abweichungen der Daten im Vergleich zu meiner KS300 sind marginal, soweit ein Vergleich heute möglich ist..... Aber die KS300 zickt bei der Regenmessung und wird weichen.

Zitat von: Gunter1710 am 29 Mai 2019, 09:07:24
.....
Wo ich leider ein großes Problem habe ist der Helligkeitssensor  :-\. Der zeigt bei mir sehr hohe Werte an (z.B. bei Sonne ca. 150.000 Lux). Zum Vergleich hab ich noch einen Helligkeitssensor an einem Wemos D1 hängen. Kann das sein, dass in pywws ein Formelfehler eingebaut ist, oder ist das nur mein Sensor? Wie sind eure Erfahrungen?
Bei Sonne ohne Wolkenbedeckung habe ich derzeit 104 kLux, die 150 kLux habe ich noch nicht gesehen, allerdings läuft das Reading erst seit ca. 2 Stunden. Könnte ich mir aber vorstellen, dass die 150 kLux auch erreicht werden.

Zitat von: Gunter1710 am 29 Mai 2019, 09:07:24
Es würde mich freuen wenn noch andere Forumsmitglieder  8) von ihren Erfahrungen berichten.

Aus diesem Grund habe ich den Thread eröffnet :-)

edit: Dateianhang beigefügt
FHEM auf RPi 4 4GB (Buster) | produktiv) CUL 868 für FS20 | S300TH | KS300 | Max!Cube als CUN 868 für TechemWZ | HM-MOD-RPI-PCB für HM | Z-Wave ZME_UZB1 | FRITZ!DECT 200 | HUE | Lightify | Echo Dot | WS3080

Gunter1710

#1
@Brice: Hatte ich gar nicht bemerkt, dass der andere Thread im Anfängerfragen Bereich war. Gute Idee ein neues Thema zu eröffnen.
Ich habe meine Screenshot angehängt.
Raspberry Pi 3, 15x Wemos D1 mini (ESPEasy)
5x HM-CC-RT-DN, 5x HM-LC-SW1-PL, 1x HM-RC-12-B, 5x HB-UNI-Sensor1 (AskSinPP)
3x SONOFF Pow (Tasmota), 1x SONOFF S20 (Tasmota), 2x SONOFF basic (Tasmota)
1x FB7560, 1x SolarLog 500, 1x Resol DeltaSol MX, 1x eBus v2 an Vaillant ecoTerm

Brice

Sieht gut aus  :)

Ich habe noch eine Herausforderung, da der Daemon für das LiveLoging nach einem Reboot des Pi nicht automatisch startet. Wie machst du das, per Cronjob?

Die Installation und Einrichtung von pywws hat einige Zeit benötigt. Hauptsächlich habe ich mich an diese englische Anleitung gehalten. Wenn ich meine eigene Doku klar habe, könnte ich ja mal das Wiki erweitern...

FHEM auf RPi 4 4GB (Buster) | produktiv) CUL 868 für FS20 | S300TH | KS300 | Max!Cube als CUN 868 für TechemWZ | HM-MOD-RPI-PCB für HM | Z-Wave ZME_UZB1 | FRITZ!DECT 200 | HUE | Lightify | Echo Dot | WS3080

Gunter1710

Ich hab jetzt die SIGNALduino Konfiguration rausgeschmissen, da ich nur ein mal am Tag Daten bekommen habe.

Zu meiner pywws Installation:
Angefangen hatte ich mit diesem Artikel
https://test-wetterstation.de/pywws-wettersoftware-fuer-usb-wireless-wetterstationen
darin wird die pywws Installation ganz gut beschrieben. Leider lässt die Beschreibung m.E. am Ende nach. Insbesondere wird nicht richtig beschrieben wie man es ohne Cron Job einrichtet.

Dann bin ich aber auf diesen Artikel gestoßen
https://pywws.readthedocs.io/en/latest/guides/livelogging.html
Hier wird unter "Using systemd" ganz gut beschrieben wie man ein systemd einrichtet. Damit funktioniert es bei mir zuverlässig.

Anbei noch meine ws3600.txt und die ws3080.txt


Raspberry Pi 3, 15x Wemos D1 mini (ESPEasy)
5x HM-CC-RT-DN, 5x HM-LC-SW1-PL, 1x HM-RC-12-B, 5x HB-UNI-Sensor1 (AskSinPP)
3x SONOFF Pow (Tasmota), 1x SONOFF S20 (Tasmota), 2x SONOFF basic (Tasmota)
1x FB7560, 1x SolarLog 500, 1x Resol DeltaSol MX, 1x eBus v2 an Vaillant ecoTerm

Reinemann67

Hallo,

ich versuche nun auch schon ein paar Tage lang, die WS3080 per pywws in FHEM einzubinden.
Dank eurer Hinweise werden die Daten auch schon von pywws  per USB auf meinen Server geholt.
per systemd Anleitung werden die Daten im Verzeichnis des extra angelegten Systemusers unter
home/pywws/data/raw/2019/2019-06  angelegt.

Aber die Definition in FHEM funktioniert nun nicht. Die Information aus der commandref passen nicht wirklich.

Ich habe aus der open3600.zip  das Programm fetch3600 unter /usr/local/bin kopiert.
Der Versuch:
define myWS3080 WS3600 "/usr/local/bin/fetch3600" 
bringt aber nur Fehler:
WS3600(Err): Can't start /usr/local/bin/fetch3600: No such file or directory
fetch3600 braucht doch bestimmt noch eine config Datei oder muss ich doch nur die Daten mit Cat ... in der definition aufrufen ?

An der Stelle bin ich lost :-(

Gunter1710

Zitat von: Reinemann67 am 12 Juni 2019, 22:15:20
Aber die Definition in FHEM funktioniert nun nicht. Die Information aus der commandref passen nicht wirklich.

Ich habe aus der open3600.zip  das Programm fetch3600 unter /usr/local/bin kopiert.
Der Versuch:
define myWS3080 WS3600 "/usr/local/bin/fetch3600" 
bringt aber nur Fehler:
WS3600(Err): Can't start /usr/local/bin/fetch3600: No such file or directory
fetch3600 braucht doch bestimmt noch eine config Datei oder muss ich doch nur die Daten mit Cat ... in der definition aufrufen ?

An der Stelle bin ich lost :-(

Ich arbeite nicht mit fetch3600.
Wenn pywws die raw Daten anlegt, dann sollte der systemd über das template (ws3600.txt oder wie bei mir ws3060.txt) das hoffentlich bei dir in /home/pywws/weather/templates/ liegt regelmäßig die für FHEM lesbare Datei in /home/pywws/weather/tmp/output/ schreiben.

Dann musst du nur noch das Device anlegen mit
define myWS3080 WS3600 cat /home/ pywws /weather/tmp/output/ ws3600.txt (oder wie auch immer deine Output Datei heißt)


Raspberry Pi 3, 15x Wemos D1 mini (ESPEasy)
5x HM-CC-RT-DN, 5x HM-LC-SW1-PL, 1x HM-RC-12-B, 5x HB-UNI-Sensor1 (AskSinPP)
3x SONOFF Pow (Tasmota), 1x SONOFF S20 (Tasmota), 2x SONOFF basic (Tasmota)
1x FB7560, 1x SolarLog 500, 1x Resol DeltaSol MX, 1x eBus v2 an Vaillant ecoTerm

Reinemann67

ok, jetzt verstehe ich auch den Unterschied der Überschriften in dem Wiki "direkt angeschlossen" und "über pywws angeschlossen" und die Readme aus dem open3600.

Bin auch wieder ein paar Schritte weiter. Musste mein Verzeichnis  data Verzeichnis noch von /home/pywws nach /home/pywws/weather verschieben

In /home/pywws/weather/templates  liegt die ws3080.txt  (welche ich hier im thread runtergeladen habe)

in /home/pywws/weather/data liegt die weather.ini
[paths]
work = work = /home/pywws/weather/tmp
datastoretype = filedata
templates = /home/pywws/weather/templates/
graph_templates = /home/pywws/weather/graph_templates/
modules = /home/pywws/weather/modules/

[config]
usb activity margin = 3.0
ws type = 3080
pressure offset = 13.6
frequent writes = False
gnuplot version = 4.2
gnuplot encoding = iso_8859_1
day end hour = 9, False
logdata sync = 1
rain day threshold = 0.2
template encoding = iso-8859-1

[hourly]
services = []
text = ['ws3080.txt']
plot = []
...

per sudo service pywws start den service pywws neu gestartet

per define myWS3080 ws3600  "cat /home/pywws/weather/templates/ws3080.txt"  konnte ich in FHEM das Device anlegen.

Status geht zuerst auf initialized, dann erscheinen aber keine Werte in den sondern nur die Platzhalter:

DTime          #idx #idx    2019-06-13 22:04:00
Dew-Point    #calc          2019-06-13 22:07:00

bei genauer Prüfung ist der Dienst doch nicht korrekt gestartet

und im /var/log/syslog  steht:
Jun 13 22:46:19 zeppe-web pywws-livelog[4012]: TypeError: '<' not supported between instances of 'NoneType' and 'datetime.datetime'
Jun 13 22:46:19 zeppe-web systemd[1]: pywws.service: Main process exited, code=exited, status=1/FAILURE
Jun 13 22:46:19 zeppe-web systemd[1]: pywws.service: Failed with result 'exit-code'.
Jun 13 22:46:19 zeppe-web systemd[1]: pywws.service: Service hold-off time over, scheduling restart.
Jun 13 22:46:19 zeppe-web systemd[1]: pywws.service: Scheduled restart job, restart counter is at 4.
Jun 13 22:46:19 zeppe-web systemd[1]: Stopped pywws weather station live logging.
Jun 13 22:46:19 zeppe-web systemd[1]: Started pywws weather station live logging.
Jun 13 22:46:19 zeppe-web pywws-livelog[4026]: pywws.logger:pywws version 19.4.0, build 1652 (d36d35b)
Jun 13 22:46:20 zeppe-web kernel: [273343.282271] usb 2-5: reset full-speed USB device number 10 using ohci-pci
Jun 13 22:46:20 zeppe-web pywws-livelog[4026]: Traceback (most recent call last):
Jun 13 22:46:20 zeppe-web pywws-livelog[4026]:   File "/usr/local/bin/pywws-livelog", line 11, in <module>
Jun 13 22:46:20 zeppe-web pywws-livelog[4026]:     load_entry_point('pywws==19.4.0', 'console_scripts', 'pywws-livelog')()
Jun 13 22:46:20 zeppe-web pywws-livelog[4026]:   File "/usr/local/lib/python3.6/dist-packages/pywws/livelog.py", line 130, in main
Jun 13 22:46:20 zeppe-web pywws-livelog[4026]:     return live_log(args[0])
Jun 13 22:46:20 zeppe-web pywws-livelog[4026]:   File "/usr/local/lib/python3.6/dist-packages/pywws/livelog.py", line 75, in live_log
Jun 13 22:46:20 zeppe-web pywws-livelog[4026]:     datalogger = pywws.logdata.DataLogger(context)
Jun 13 22:46:20 zeppe-web pywws-livelog[4026]:   File "/usr/local/lib/python3.6/dist-packages/pywws/logdata.py", line 100, in __init__
Jun 13 22:46:20 zeppe-web pywws-livelog[4026]:     while saved_date < self.last_stored_time:
Jun 13 22:46:20 zeppe-web pywws-livelog[4026]: TypeError: '<' not supported between instances of 'NoneType' and 'datetime.datetime'
Jun 13 22:46:20 zeppe-web systemd[1]: pywws.service: Main process exited, code=exited, status=1/FAILURE
Jun 13 22:46:20 zeppe-web systemd[1]: pywws.service: Failed with result 'exit-code'.
Jun 13 22:46:20 zeppe-web systemd[1]: pywws.service: Service hold-off time over, scheduling restart.
Jun 13 22:46:20 zeppe-web systemd[1]: pywws.service: Scheduled restart job, restart counter is at 5.


was komisch ist, da dies ja gestern noch funktionierte :-(

Brice

Zur besseren Lesbarkeit bitte immer für Code, logausgaben etc...Code Tags (das # im Editor über den Smilies) verwenden.

Die weather.ini scheint fehlerhaft zu sein, ist das alles, was du dort drin stehen hast? Du musst schon mitgeben, von welchem Template in welche Datei geschrieben werden soll.

Da du "ws3080.txt" nutzt, schau dir mal die weather.ini von Gunter1710 an, dann sollte es dir klarer werden.
FHEM auf RPi 4 4GB (Buster) | produktiv) CUL 868 für FS20 | S300TH | KS300 | Max!Cube als CUN 868 für TechemWZ | HM-MOD-RPI-PCB für HM | Z-Wave ZME_UZB1 | FRITZ!DECT 200 | HUE | Lightify | Echo Dot | WS3080

Reinemann67

Vielen Dank für den Hinweis.
Ich habe mir die weather.ini angesehen und auch ein paar Zeilen korrigiert.
Die war dann fast mit dem Beispiel identisch (ausser underground)
Es ist aber immer wieder der Fehler

Jun 18 07:15:04 zeppe-web pywws-livelog[6528]:     while saved_date < self.last_stored_time:
Jun 18 07:15:04 zeppe-web pywws-livelog[6528]: TypeError: '<' not supported between instances of 'NoneType' and 'datetime.datetime'
J


im syslog vorhanden.
Dann habe ich die weather.ini noch mal komplett gelöscht.
Nach dem nächsten Startversuch wurde eine neue angelegt, in der ich nur den ws type angepasst habe.

[paths]
work = /tmp/pywws
datastoretype = filedata

[config]
usb activity margin = 3.0
ws type = 3080


also sehr rudimentär - aber derselbe Fehler in der syslog
ich überlege, ob ich eine andere Version als die python3.6 nehmen sollte. (obwohl es ja schon mal auf diesem system lief)

ok, muss erst mal zur Arbeit. 


Gunter1710

Hallo Reinemann67,

das klingt eher als wenn in deiner Template datei (ws3600.txt oder ws3080.txt) ein Fehler wäre.
Schick doch mal beide Dateien (weather.ini und wsxxxx.txt), dann können wir uns die anschauen.

Raspberry Pi 3, 15x Wemos D1 mini (ESPEasy)
5x HM-CC-RT-DN, 5x HM-LC-SW1-PL, 1x HM-RC-12-B, 5x HB-UNI-Sensor1 (AskSinPP)
3x SONOFF Pow (Tasmota), 1x SONOFF S20 (Tasmota), 2x SONOFF basic (Tasmota)
1x FB7560, 1x SolarLog 500, 1x Resol DeltaSol MX, 1x eBus v2 an Vaillant ecoTerm

Gunter1710

Kleiner Erfahrungsbericht:
Ich habe Probleme mit dem Datenspeicher. Das wirk sich wie folgt aus:
Wenn ich das Erfassungsintervall auf 5 Min stelle bekomme ich in FHEM auch alle 5 Min einen neuen Wert. Leider ist der Speicher dann nach ein paar Tagen voll und es kommen keine Werte mehr. Wenn ich das Erfassungsintervall auf 4 Stunden stelle bekomme ich nur alle 4 Stunden ein Wert.
Laut Anleitung soll der älterste Wert mit dem neusten Wert überschrieben werden sofern der Speicher voll ist. Dennoch bekomme ich keine Werte bis ich den Speicher lösche.

Wie sind eure Erfahrungen?
Raspberry Pi 3, 15x Wemos D1 mini (ESPEasy)
5x HM-CC-RT-DN, 5x HM-LC-SW1-PL, 1x HM-RC-12-B, 5x HB-UNI-Sensor1 (AskSinPP)
3x SONOFF Pow (Tasmota), 1x SONOFF S20 (Tasmota), 2x SONOFF basic (Tasmota)
1x FB7560, 1x SolarLog 500, 1x Resol DeltaSol MX, 1x eBus v2 an Vaillant ecoTerm

knopf_piano

das intervall schreibt dir entsprechend dem wert ins EEPROM. Wenn du das Intervall auf 5 min läßt ist der irgendwann totgeschrieben, war bei mir so (not logging data) und keine Werte wurden mehr geliefert.
starte den pywws-logging-daemon, dann bekommst zu alle 45s Werte. ich mach das mittlerweile per mqtt. siehe pywws-doku. Mein intervall steht auf 30min
zotac nano mit proxmox und ganz viel zeug drauf

Brice

@Reinemann67
Da liegt doch einiges schief. Wie von mir schon erwähnt, deine weather.ini ist so nicht vollständig. Zunächst sind die Angaben zu den Pfaden nicht komplett. Also zumindest eintragen

  • wo das Template (wohl 3600.txt) liegt
  • wo die Daten hingeschrieben werden (bei dir anscheinend 3080.txt)
Bei mir sieht das so aus, bei dir musst du dies anpassen:
[paths]
templates = /home/pi/weather/templates/
graph_templates = /home/pi/weather/graph_templates/
work = /home/pi/weather/data/
local_files = /home/pi/weather/results/
datastoretype = filedata
modules = /home/pi/weather/modules/

wobei die Einträge für graph_templates, local_files und modules für meine Konfiguration uninteressant sind.

Ich gehe davon aus, dass du ein Verzeichnis Templates eingerichtet hast und in dieses Verzeichnis das im Wiki beschriebene Template ws3800.txt abgelegt hast.

Dann gibt es in der ini-Datei den Bereich [copy]. Dort wird festgelegt, wo die Output-Datei liegt. Sieht bei mir wie folgt aus:
[copy]
directory = /home/pi/weather/data


In die Bereiche der weather.ini [live], [logged], [hourly], [12 hourly] und [daily] schreibst du was passieren soll. Ich nutze die Methode [logged], damit werden alle 48 Sekunden die aktuellen Daten in die Output-Datei geschrieben. Sieht bei mir wie folgt aus:
[logged]
services = [('copy', 'ws3600.txt')]
text = ['ws3600.txt']
plot = []

Template und Output-Datei haben bei mir denselben Namen (ws3600.txt), musst du ggfls ändern.
Dann die Def in FHEM, bei mir wie folgt:
define <Device> WS3600 "cat /home/pi/weather/data/ws3600.txt" <Interval>

Ich hoffe, die Erklärung ist korrekt, bei mir läuft es so.

Aufgrund des neuen Beitrags von knopf_piano:

Meine Erfahrung: Speicher ist lt. Anzeige voll, es wird jedoch 75% Memory im Display der WS3080 angezeigt, Daten kommen. pywws-logging-daemon ist aktiviert, die Daten werden in FHEM alle 120 Sekunden abgerufen. Läuft so seit dem 29.05.2019. Also ich habe kein Problem.
FHEM auf RPi 4 4GB (Buster) | produktiv) CUL 868 für FS20 | S300TH | KS300 | Max!Cube als CUN 868 für TechemWZ | HM-MOD-RPI-PCB für HM | Z-Wave ZME_UZB1 | FRITZ!DECT 200 | HUE | Lightify | Echo Dot | WS3080

Reinemann67

Nun habe ich mal einfach alles in meine weather.ini übernommen inkl. Umbenennung in ws3600.txt :

[paths]
templates = /home/pywws/weather/templates/
graph_templates = /home/pywws/weather/graph_templates/
work = /home/pywws/weather/data/
local_files = /home/pywws/weather/results/
datastoretype = filedata
modules = /home/pywws/weather/modules/

[config]
usb activity margin = 3.0
ws type = 3080

[copy]
directory = /home/pywws/weather/data

[logged]
services = [('copy', 'ws3600.txt')]
text = ['ws3600.txt']
plot = []


In der /home/pywws/weather/templates/ws3600.txt steht
#locale "False"#
#timezone local#

Date #idx "%d-%h-%Y"#

Time #idx "%H:%M:%S"#

Ti #temp_in "%.1f"#

To #temp_out "%.1f"#

DP #calc "dew_point(data['temp_out'], data['hum_out'])" "%.1f"#

WC #calc "apparent_temp(data['temp_out'], data['hum_out'], data['wind_ave'])" "%.1f"#

RHi #hum_in "%d"#

RHo #hum_out "%d"#

#! aenderung#
DIR #wind_dir "%.0f" "-" "winddir_degrees(x)"#

DIRtext #wind_dir "%s" "-" "winddir_text(x)"#

WS #wind_ave "%.1f"#

WG #wind_gust "%.1f"#

RP #rel_pressure "%.0f"#

Tendency #pressure_trend "%s" "" "pressure_trend_text(x)"#

Forecast #calc "Zambretti(params, data)" "%s"#

IL #illuminance "%.0f"#

UV #uv "%.0f"#

#raw#
Rtot #rain "%0.1f"#

R1h #calc "rain_hour(data)" "%.1f"#

R24h #calc "rain_day(data)" "%.1f"#



Der Fehler bleibt :-(
Ist evtl. meine neu erworbene WS3080 von ELV nicht kompatible ist mit der  WS3600.txt ?

Vielen Dank für eure Zeit !

Brice

#14
Es gibt hier mehrere WS3080 von ELV, die über das Modul WS3600 laufen, daher: kompatibel = ja

Irgendetwas läuft bei dir falsch. Halte dich an die englische Anleitung, damit fährst du am besten. Meine funktionierende weather.ini sieht so aus:

Edit 20.06.2019: mir fällt gerade auf, dass seit ca. 46 Stunden die Außentemperatur nicht mehr geschrieben wird. Irgendwie hat sich meine weather.ini geändert, evt. weil ich Zeilen auskommentiert hatte. Ich korrigiere diese im Laufe der nächsten Zeit und stelle die dann wieder rein.
Sorry
FHEM auf RPi 4 4GB (Buster) | produktiv) CUL 868 für FS20 | S300TH | KS300 | Max!Cube als CUN 868 für TechemWZ | HM-MOD-RPI-PCB für HM | Z-Wave ZME_UZB1 | FRITZ!DECT 200 | HUE | Lightify | Echo Dot | WS3080