FOSHKplugin

Für Geräte von froggit
Benutzeravatar
moppedhausi
Offline
Beiträge: 196
Registriert: 08 Dez 2020, 09:17
Wohnort: Willich
Hat sich bedankt: 69 mal
Danksagung erhalten: 7 mal
Kontaktdaten:

Re: FOSHKplugin

#271

Beitrag von moppedhausi »

olicat hat geschrieben: 29 Feb 2024, 07:45 Vielen Dank fuer die Daten - das ist wie erwartet sehr einfach.
Fuer welche Art von Forward wuerdest Du denn gern die Daten des Feinstaubsensors hinzufuegen?
Sehr interessant, auch für mich.
Hab noch 2 Feinstaubsensoren hier in Betrieb, wenn ich die Daten in PWS Dashboard einbauen könnte.

Code: Alles auswählen

{"software_version": "MR-2017-45", "age":"4", "sensordatavalues":[{"value_type":"PMS_P0","value":"8.91"},{"value_type":"PMS_P1","value":"8.75"},{"value_type":"PMS_P2","value":"8.16"},{"value_type":"PMS_P1_cf","value":"9.25"},{"value_type":"PMS_P25_cf","value":"16.91"},{"value_type":"PMS_P100_cf","value":"18.09"},{"value_type":"PMS_NP3","value":"1914.00"},{"value_type":"PMS_NP5","value":"569.00"},{"value_type":"PMS_NP10","value":"134.00"},{"value_type":"PMS_NP25","value":"14.00"},{"value_type":"PMS_NP50","value":"2.00"},{"value_type":"PMS_NP100","value":"2.00"},{"value_type":"PMS_readcount","value":"32.00/0.50100"},{"value_type":"PMS_P0_min","value":"7.00"},{"value_type":"PMS_P0_max","value":"10.00"},{"value_type":"PMS_P1_min","value":"8.00"},{"value_type":"PMS_P1_max","value":"11.00"},{"value_type":"PMS_P2_min","value":"7.00"},{"value_type":"PMS_P2_max","value":"10.00"},{"value_type":"temperature","value":"9.50"},{"value_type":"humidity","value":"99.90"},{"value_type":"samples","value":"859887"},{"value_type":"min_micro","value":"133"},{"value_type":"max_micro","value":"790891"},{"value_type":"signal","value":"-64"},{"value_type":"volt","value":"2.79"}]}
feinstaub.png
feinstaub.png (49.85 KiB) 366 mal betrachtet
Benutzeravatar
olicat
Online
Beiträge: 2029
Registriert: 07 Dez 2020, 20:33
Wohnort: Hohen Neuendorf
Hat sich bedankt: 28 mal
Danksagung erhalten: 414 mal
Kontaktdaten:

Re: FOSHKplugin

#272

Beitrag von olicat »

Hi!
Ich sende z.b. auch an Ambient Weather, Wunderground, und PWSWeather
Das schreit nach einem neuen Feature fuer FOSHKplugin ...
Bisher kann man nur pro Forward Daten per exec-Funktion hinzufuegen.
Da sich die Ausgabeformate fuer die jeweiligen Wetterdienste eklatant unterscheiden, muesste man also fuer jeden Forward ein spezielles Script schreiben.

Zukuenftig wird es die Moeglichkeit geben, per Export/ADD_SCRIPT ein Script anzugeben, dass schon der von der Wetterstation kommenden Daten-Zeile beliebige Werte hinzufuegen kann.
Dann haette man EIN zentrales Script und koennte die dort hinzugefuegten Daten in JEDEM Forward nutzen - ohne das da weitere Scripte erforderlich sind.

Auf die Schnelle und mit Bordmitteln der verfuegbaren FOSHKplugin-Version kannst Du mit beiliegendem Script die Daten Deines Feinstaubsensors zumindest dem PWSDashboard-Forward (prinzipiell allen Forwards im Ecowitt-Format) hinzufuegen.
PWSDashboard koennte diese Daten dann in einem WH45-Block anzeigen - sofern Du den konfiguriert hast.

Folgende Dinge sind erforderlich:
1. beiliegende Datei als addLDdata.sh im Installationsverzeichnis von FOSHKplugin abspeichern
2. Anpassen der addLDdata.sh - IP-Adresse Deines Feinstaubsensors bei ADR anpassen
3. das Script ausfuehrbar machen: chmod ug+x addLDdata.sh
4. Sicherstellen, das die erforderlichen Tools verfuegbar sind: sudo apt-get install curl jq
5. manueller Test des Scripts: ./addLDdata.sh - es sollte dann eine Zeile wie &pm25_co2=8.15&pm10_co2=17.17&tf_co2=31.55&humi_co2=87.72 ausgegeben werden
6. Anpassen des Forwards zu PWSDashboard - dabei muss die Zeile FWD_EXEC = ./addLDdata.sh im betreffenden Forward hinzugefuegt werden
7. Neustart von FOSHKplugin - sudo service foshkplugin restart

Du kannst dann unter https://wetter.phantasoft.de/PWS_module_test.php (ersetze wetter.phantasoft.de mit dem Namen Deiner PWSDashboard-Seite) unter "Show station values" pruefen, ob die Keys pm25_co2, pm10_co2, tf_co2 und humi_co2 (also irgendwas mit co2 im Namen) vorhanden sind.
Wenn soweit alles ok ist, musst Du Dir dann nur noch den WH45-Block im PWSDashboard einrichten.

Achtung!
Das Script setzt voraus, dass kein lokaler WH45/WH46 bereits vorhanden ist!

Viel Erfolg!

@Wilfried:
Die Ausgaben und Zuordnungen in Deinem JSON sind leicht anders - das Script wird ohne Anpassungen auf Deine Belange nicht funktionieren.
Zusaetzlich gibt es das Problem, dass pro Konsole nur genau EIN WH45/WH46 vorhanden sein kann. Man muesste also in Deinem Fall mehrere WH45-Bloecke im PWSDashboard installieren und eigene Namen fuer die Keys nutzen. Das ist deutlich aufwendiger.

Oliver
Dateianhänge
addLDdata.sh.txt
(2.22 KiB) 14-mal heruntergeladen
exxes
Offline
Beiträge: 71
Registriert: 02 Dez 2022, 22:24
Wohnort: Kreuzau
Hat sich bedankt: 8 mal
Kontaktdaten:

Re: FOSHKplugin

#273

Beitrag von exxes »

Auch ich verwende einen PMS7003 und wäre interessiert. Aber für diesen Sensor sieht es eher schwach aus wie ich das so mitbekomme. :roll:
Dateianhänge
Daten PMS7003
Daten PMS7003
feinstaub.PNG (37.78 KiB) 343 mal betrachtet
Mit lieben Grüßen aus der wunderschönen Eifel, Thomas https://www.Kreuzau24.de
Ecowitt WittBoy GW2001 / Davis Vantage Pro2 aktiv Plus / Raspberry Pi 3 Modell B /Personal Weather Tablet / CumulusMX v3.28.6 build 3283
Benutzeravatar
olicat
Online
Beiträge: 2029
Registriert: 07 Dez 2020, 20:33
Wohnort: Hohen Neuendorf
Hat sich bedankt: 28 mal
Danksagung erhalten: 414 mal
Kontaktdaten:

Re: FOSHKplugin

#274

Beitrag von olicat »

Hi!
Aber für diesen Sensor sieht es eher schwach aus wie ich das so mitbekomme.
Nein, absolut nicht!
Nur wird das von mir hier veroeffentlichte Script ohne Anpassungen nicht funktionieren, da die JSON-Struktur eine andere ist.
Jedoch sollten die Grundlagen soweit klar sein, dass man etwaige Anpassungen auch selbst taetigen kann.
Was in Euren Bildern ist denn der tatsaechliche aktuelle PM-Wert?
PM1_a oder PM1_cf (wofuer steht cf?)?

Theoretisch kann man JEDEN dieser Werte mit zum Ausgabestring von FOSHKplugin hinzufuegen.
Nur gibt es die entsprechenden Keys im Ecowitt-Format nicht.

Oliver
Benutzeravatar
moppedhausi
Offline
Beiträge: 196
Registriert: 08 Dez 2020, 09:17
Wohnort: Willich
Hat sich bedankt: 69 mal
Danksagung erhalten: 7 mal
Kontaktdaten:

Re: FOSHKplugin

#275

Beitrag von moppedhausi »

olicat hat geschrieben: 29 Feb 2024, 13:34 Was in Euren Bildern ist denn der tatsaechliche aktuelle PM-Wert?
PM1_a oder PM1_cf (wofuer steht cf?)?
Der aktuelle Wert ist der PM1_a Wert.
Wofür der cf Wert steht, weiß ich noch nicht.
Hab den Programmierer der Firmware angeschrieben, aber noch keine Antwort erhalten.
Benutzeravatar
Mittelhesse
Offline
Beiträge: 55
Registriert: 08 Dez 2023, 23:29
Wohnort: Leun
Hat sich bedankt: 37 mal
Danksagung erhalten: 4 mal
Kontaktdaten:

Re: FOSHKplugin

#276

Beitrag von Mittelhesse »

olicat hat geschrieben: 29 Feb 2024, 09:32
Folgende Dinge sind erforderlich:
1. beiliegende Datei als addLDdata.sh im Installationsverzeichnis von FOSHKplugin abspeichern
2. Anpassen der addLDdata.sh - IP-Adresse Deines Feinstaubsensors bei ADR anpassen
3. das Script ausfuehrbar machen: chmod ug+x addLDdata.sh
4. Sicherstellen, das die erforderlichen Tools verfuegbar sind: sudo apt-get install curl jq
5. manueller Test des Scripts: ./addLDdata.sh - es sollte dann eine Zeile wie &pm25_co2=8.15&pm10_co2=17.17&tf_co2=31.55&humi_co2=87.72 ausgegeben werden
6. Anpassen des Forwards zu PWSDashboard - dabei muss die Zeile FWD_EXEC = ./addLDdata.sh im betreffenden Forward hinzugefuegt werden
7. Neustart von FOSHKplugin - sudo service foshkplugin restart

Du kannst dann unter https://wetter.phantasoft.de/PWS_module_test.php (ersetze wetter.phantasoft.de mit dem Namen Deiner PWSDashboard-Seite) unter "Show station values" pruefen, ob die Keys pm25_co2, pm10_co2, tf_co2 und humi_co2 (also irgendwas mit co2 im Namen) vorhanden sind.
Wenn soweit alles ok ist, musst Du Dir dann nur noch den WH45-Block im PWSDashboard einrichten.

Achtung!
Das Script setzt voraus, dass kein lokaler WH45/WH46 bereits vorhanden ist!

Script hochgeladen und läuft auf dem Loxberrry

Code: Alles auswählen

loxberry@loxberry:~/bin/plugins/foshkplugin $ ./addLDdata.sh
&pm25_co2=2.72&pm10_co2=5.82&tf_co2=39.81&humi_co2=66.17
FWD_EXEC =
ist in der Config eingetragen

Code: Alles auswählen

[Forward]
FWD_REMAP=
FWD_PWD= xxxxxxxx
FWD_ENABLE=True
FWD_STATUS=True
FWD_TYPE=EW
FWD_EXEC=./addLDdata.sh
FWD_URL=https://wetter.xyz.abc/ecowitt/
FWD_QDIR=
FWD_OPTION=
FWD_QUEUE=
FWD_IGNORE=""
FWD_WARNINT=10
FWD_SID=xxxxx
FWD_CMT=This is a permanent comment field for notes on this forward
FWD_MQTTCYCLE=0
FWD_INTERVAL=15
aber beim PWS Dashboard kommt nichts an

Code: Alles auswählen

totalrainin	not used	-		missing	
soilmoisture1	soil_mst1	Y	Y	64	
soilmoisture2	soil_mst2	Y	Y	missing	
soilmoisture3	soil_mst3	Y	Y	missing	
soilmoisture4	soil_mst4	Y	Y	missing	
pm25_ch1	pm25_crnt1	Y	Y	missing	
pm25_ch2	pm25_crnt2	Y	Y	missing	
pm25_ch3	pm25_crnt3	Y	Y	missing	
pm25_ch4	pm25_crnt4	Y	Y	missing	
pm25_avg_24h_ch1	pm25_24avg1	Y	Y	missing	
pm25_avg_24h_ch2	pm25_24avg2	Y	Y	missing	
pm25_avg_24h_ch3	pm25_24avg3	Y	Y	missing	
pm25_avg_24h_ch4	pm25_24avg4	Y	Y	missing	
lightning_time	lightningtime	Y	Y	1709216250	
lightning_num	lightningmi	Y	Y	1	
lightning	lightning	Y	Y	10	
Auszug aus dem Send Logfile

Code: Alles auswählen

29.02.2024 20:41:58.918 <ERROR> FWD-00: Exec: No such file or directory
Zuletzt geändert von Mittelhesse am 29 Feb 2024, 20:44, insgesamt 1-mal geändert.
Benutzeravatar
olicat
Online
Beiträge: 2029
Registriert: 07 Dez 2020, 20:33
Wohnort: Hohen Neuendorf
Hat sich bedankt: 28 mal
Danksagung erhalten: 414 mal
Kontaktdaten:

Re: FOSHKplugin

#277

Beitrag von olicat »

Hi!

FOSHKplugin neu gestartet?
Die Config wird nur beim Start eingelesen.

Oliver
Benutzeravatar
Mittelhesse
Offline
Beiträge: 55
Registriert: 08 Dez 2023, 23:29
Wohnort: Leun
Hat sich bedankt: 37 mal
Danksagung erhalten: 4 mal
Kontaktdaten:

Re: FOSHKplugin

#278

Beitrag von Mittelhesse »

ja habe ich, lag an dem ./ Aufruf
mit kompletten Pfad macht es der Loxberry jetzt, aber ich bekomme die Daten nicht angezeigt da ich für den WH45 anscheinend keinen Block habe
Bildschirmfoto 2024-02-29 um 20.51.06.png
Bildschirmfoto 2024-02-29 um 20.51.06.png (86 KiB) 307 mal betrachtet
Bildschirmfoto 2024-02-29 um 20.50.51.png
Bildschirmfoto 2024-02-29 um 20.50.51.png (69.81 KiB) 307 mal betrachtet
Benutzeravatar
olicat
Online
Beiträge: 2029
Registriert: 07 Dez 2020, 20:33
Wohnort: Hohen Neuendorf
Hat sich bedankt: 28 mal
Danksagung erhalten: 414 mal
Kontaktdaten:

Re: FOSHKplugin

#279

Beitrag von olicat »

Hi!
ich bekomme die Daten nicht angezeigt da ich für den WH45 anscheinend keinen Block habe
Zur Installation des WH45-Blocks siehe hier und dort .
Wobei die heutige Installation des Blocks via extra_blocks.txt ungleich leichter sein sollte.

Oliver
Benutzeravatar
olicat
Online
Beiträge: 2029
Registriert: 07 Dez 2020, 20:33
Wohnort: Hohen Neuendorf
Hat sich bedankt: 28 mal
Danksagung erhalten: 414 mal
Kontaktdaten:

Re: FOSHKplugin

#280

Beitrag von olicat »

Hi!

Ist das soweit verständlich und (vorallem) hilfreich?
Die Funktion habe ich in meine interne Version implementiert und teste damit jetzt. Hier der Entwurf einer Anleitung (aka Rezept) fuer die spaetere Dokumentation.
--
Zusätzliche Daten von Fremdgeräten für Wetterdienste bereitstellen (script)

Mit der FWD_EXEC-Funktion gibt es schon länger die Möglichkeit, die Ausgabezeile für einen Forward kurz vor dem eigentlichen Versand zum jeweiligen Wetterstationsdienst per Script zu ändern. Dieses Script arbeitet ausschließlich Forward-spezifisch und muss daher für jeden einzelnen Forward eingerichtet werden.
Wenn man nun aber z.B. die Daten eines Luftdaten.info-Feinstaubsensors als Daten eines virtuellen WH45/WH46 für das Versenden an mehrere Dienste nutzen möchte, müsste man für jeden einzelnen Dienst ein separates Script einrichten.
Und je nach Zielformat bzw. FWD_TYPE (Ecowitt-Format, WU, Awekas, Ambient Weather etc.) muss dieses Script dann auch einen unterschiedlichen Inhalt haben.

Mit ADD_SCRIPT lässt sich ab v0.10 ein globales Script definieren, dass die ursprünglich von der Wetterstation kommenden Daten erhält und modifizierbar macht. Nach der Änderung erhält FOSHKplugin die modifizierten bzw. erweiterten Daten zurück und fängt dann erst an, diese Daten für jeden einzelnen Forward zu verarbeiten.
Somit gibt es eine zentrale Möglichkeit der Daten-Manipulation, die für sämtliche Ausgabeformate gültig ist.

Ein Beispiel:
Der Feinstaubsensor von Luftdaten.info lässt sich lokal per Web-Interface abfragen. Über den Link http://ip-address/data.json (wobei ip-address der IP-Adresse des Sensors entspricht) erhält man ein JSON-Datei mit den Werten zurück, die sich mit Standard-Bordmitteln sehr leicht parsen und weiterverarbeiten lässt.

JSON - je nach Softwarestand des Geräts kann der Aufbau des JSON jedoch anders sein:

Code: Alles auswählen

{
   "software_version":"NRZ-2020-133",
   "age":"28",
   "sensordatavalues":[
      {
         "value_type":"SDS_P1",
         "value":"8.25"
      },
      {
         "value_type":"SDS_P2",
         "value":"3.03"
      },
      {
         "value_type":"samples",
         "value":"5051440"
      },
      {
         "value_type":"min_micro",
         "value":"28"
      },
      {
         "value_type":"max_micro",
         "value":"20098"
      },
      {
         "value_type":"interval",
         "value":"145000"
      },
      {
         "value_type":"signal",
         "value":"-73"
      }
   ]
}
SDS_P1 entspricht hier dem PM10-Wert und SDS_P2 dem PM2.5-Wert.
Der WH45 kennt im Ecowitt-Format die Keys tf_co2 (Temperatur in °F), humi_co2 (Luftfeuchte), pm25_co2 (der PM2.5-Wert), pm25_24h_co2 (der 24h-Mittelwert von PM2.5), pm10_co2 (PM10-Wert), pm10_24h_co2 (24h-Mittelwert PM10),
co2 (CO2) und co2_24h (24h-Mittel CO2). Sofern wir selbst keinen echten WH45/WH46 haben, können wir den PM10- sowie PM2.5-Wert des luftdaten.info-Sensors nutzen und einen WH45 - zumindest partiell - emulieren, indem wir die Keys des WH45/WH46 nutzen.
Wir weisen also per Script dem Key pm25_co2 den Wert von SDS_P2 und dem Key pm10_co2 den Wert von SDS_P1 zu.

Zum besseren Verständnis hier der Ablauf der einzelnen Schritte:

1. FOSHKplugin erhaelt die Daten der Konsole
2. bei Datenerhalt wird das konfigurierte Script gestartet, das folgende Arbeitsschritte ausführt:
2.1 Daten abfragen - irgendwo müssen die Werte ja her kommen
2.2 mit den echten Daten der Wetterstation zusammenfügen
2.3 an FOSHKplugin zurückgeben
3. FOSHKplugin sendet an alle konfigurierten Wetterdienste Dienste

Hier das Beispiel-Script, das den kompletten Punkt 2 ausführt:

Code: Alles auswählen

#!/bin/bash
# complements the output line of FOSHKplugin with values of the particulate matter sensor from Luftdaten.info and emulates a WH41
# the channel number of the virtual WH41 is defined via the variable WH41
# depending on the output format, the output strings must be modified - in Ecowitt format, the individual components are combined
# using an "&" - used here
# needs curl and jq - install with sudo apt-get install curl jq
# general help: https://foshkplugin.phantasoft.de/generic#exec

# define the local ip address of the Sensor
ADR=192.168.15.229

# define the channel number of the virtual WH41; 9 = emulate WH45 instead
WH41=9

#JSON=`curl -s http://${ADR}/data.json`
JSON=`cat luftdaten2.json`

# the original output data from FOSHKplugin
instr="$@"

# PM2.5
pm2=`echo ${JSON}|jq ".sensordatavalues[1].value"|sed 's/\"//g'`
if [ ! -z "${pm2}" ]; then 
  if [ "${WH41}" = "9" ]; then pm2string="&pm25_co2=${pm2}"; else pm2string="&pm25_ch${WH41}=${pm2}"; fi
fi

# PM10
pm1=`echo ${JSON}|jq ".sensordatavalues[0].value"|sed 's/\"//g'`
if [ ! -z "${pm1}" ]; then
  if [ "${WH41}" = "9" ]; then pm1string="&pm10_co2=${pm1}"; else pm1string="&pm10_ch${WH41}=${pm1}"; fi
fi

# temp in °C - must be converted to °F - F = (C*9/5)+32 -
temp=`echo ${JSON}|jq ".sensordatavalues[2].value"|sed 's/\"//g'`
temp=`echo "scale=2; (${temp}*9/5)+32"|bc`
if [ ! -z "${temp}" ]; then
  if [ "${WH41}" = "9" ]; then tempstring="&tf_co2=${temp}"; else tempstring="&tf_ch${WH41}=${temp}"; fi
fi

# pressure - not supported by WH41, WH45, WH46 - you could override the original pressure from wether station
# not used
pressure=`echo ${JSON}|jq ".sensordatavalues[3].value"|sed 's/\"//g'`
if [ ! -z "${pressure}" ]; then 
  if [ "${WH41}" = "9" ]; then pressurestring="&tf_pressure=${pressure}"; else pressurestring="&pressure_ch${WH41}=${pressure}"; fi
fi

#humidity
humidity=`echo ${JSON}|jq ".sensordatavalues[4].value"|sed 's/\"//g'`
if [ ! -z "${humidity}" ]; then
  if [ "${WH41}" = "9" ]; then humiditystring="&humi_co2=${humidity}"; else humiditystring="&humidity_ch${WH41}=${humidity}"; fi
fi

# merge the original string with the new components
echo "${instr}${pm2string}${pm1string}${tempstring}${humiditystring}"

Das Script hier ist etwas umfangreicher, weil es wahlweise Daten für einen WH41 oder WH45 zur Verfügung stellen kann.

Zur Installation/Konfiguration:

1. beiliegende Datei als addLDdata.sh im Installationsverzeichnis von FOSHKplugin (/opt/FOSHKplugin/) abspeichern
2. Anpassen der addLDdata.sh - IP-Adresse Deines Feinstaubsensors bei ADR anpassen
3. das Script ausfuehrbar machen: chmod ug+x addLDdata.sh
4. Sicherstellen, das die erforderlichen Tools verfuegbar sind: sudo apt-get install curl jq
5. manueller Test des Scripts: ./addLDdata.sh - es sollte dann eine Zeile wie &pm25_co2=8.15&pm10_co2=17.17&tf_co2=31.55&humi_co2=87.72 ausgegeben werden
6. Anpassen des Forwards zu PWSDashboard - dabei muss die Zeile FWD_EXEC = ./addLDdata.sh im betreffenden Forward hinzugefuegt werden
7. Neustart von FOSHKplugin - sudo service foshkplugin restart

Achtung!
Es handelt sich um ein sehr mächtiges Feature das mit Bedacht genutzt werden sollte. Fehler im Script können zu Ärger mit dem Ziel-Wetterdienst oder auch zum Ausfall von FOSHKplugin führen.
Als Sofort-Maßnahme bei etwaigen unklaren Fehlerbildern immer gleich im Script unterhalb des shebang "#!/bin/bash" eine Zeile exit einfügen - dann wird das Script weiterhin von FOSHKplugin gestartet, richtet aber kein Unheil mehr an.
Scripte sollten gut getestet werden - auch unter Bedingungen die nicht vorgesehen sind - idealerweise lokal. Als Parameter lässt sich eine Textzeile angeben, an die die zusätzlichen Keys und Werte angehängt werden.
Im SND-Logfile wird der Aufruf des Scripts sowie feststellbare Fehler protokolliert.
--

Oliver
Antworten