Versions Compared


  • This line was added.
  • This line was removed.
  • Formatting was changed.


titleVersion History...

Version 0.07 - coming soon - public beta-version v0.07: 19.02.2021

  • Fixed bug with IGNORE_EMPTY: UDP sending to Loxone did not work if IGNORE_EMPTY was deactivated
  • Log output: "custom mode" renamed to "custom server"
  • now sends the text OK to the sender in addition to the response code 200 when the data is received via http
  • Bugfix: known issue regarding socket problems and Chrome hopefully solved - the socket should be released again after a 5 seconds timeout
  • Troubleshooting thunderstorm warning (not every thunderstorm was reported)
  • Bugfix: Program error with PM2.5 values above 500 fixed
  • Bugfix: Handling of %20 in the dateutc field (e.g. from the WH2600 LAN)
  • Config parsing made more robust with regard to Boolean values (mkBoolean)
  • Forwards can now be activated/deactivated (FWD_ENABLE = True/False) and commented (FWD_CMT) in the config file
  • Multi-instance: several instances of FOSHKplugin can now be operated in parallel - in different directories
  • Support of the Ambient Weather format for incoming messages as well as forward (AMB/RAWAMB)
    in the absence of yearlyrainin, totalrainin is used and in the absence of rainratein, hourlyrainin is used
  • Forward input data in Weathercloud format via GET as type WC possible
  • Forward input data in Meteotemplate format via GET as type MT possible
  • Forward input data in Awekas format via GET as type AWEKAS possible
  • support of WH45 (PM25, PM10, CO2 sensor) with additional AQI and CO2-level calculation
  • Preparation for the new leaf wetness sensor WN35
  • Thunderstorm warning: number of flashes (lcount) and min. and max. Distance (ldmin and ldmax) are transmitted
  • Improvement with regard to TimeOut behavior; http now has a TimeOut of 8 and UDP of 3 seconds
  • Ecowitt-Forward: if totalrain is available - but no yearlyrain, yearlyrain is automatically set with the value of totalrain
  • New configuration option Export\OUT_TIME = True sets the time stamp of incoming messages from the weather station to the time of receipt
  • fake mode now also activated for incoming messages in WU and Ambient Weather format
  • an automatic restart in the event of missing data from the weather station can be configured via Warning\WSDOG_RESTART
  • important status messages can now also be sent as push notification via pushover (update, sensor, watchdog, battery, storm and thunderstorm warnings)
  • generic: display of all detected weather stations during installation via (-scanWS)
  • Average value calculation (with EVAL_DATA = True) implemented for wind and wind direction, outputs windspdmph_avg10m, winddir_avg10m
  • max gust calculation (with EVAL_DATA = True) implemented: windgustkmh_max10m
  • Output of the lux value (solarradiation * 126.7) as field brightness (with EVAL_DATA = True)
  • with Logging\IGNORE_LOG you can exclude lines from the logging in the standard log (comma-separated list of search words) - for example crondaemon
  • With FWD_EXEC, a script can be specified for each forward that starts with the output string as a parameter and the last output line is used as the new output string for sending
  • Value request: an http request http://ipaddress:portnumber/getvalue?key=[key] outputs the value for the key [key], whereby the key may be the RAW key as well as the converted key name
    Example: curl outputs the value "1.34" of the wind speed mph key
    in connection with FWD_EXEC, data from other instances can be queried and integrated
  • In addition to the http-GET query /CSV and /CSVHDR with dynamic fields, /SSV and /SSVHDR with static fields are now also supported, based on the field description in CSV\CSV_FIELDS
    thus the order of the fields is fixed; empty fields (with no content e.g. in the event of a sensor failure) are not skipped but are output as ""
  • In addition to the http-GET query /CSV and /CSVHDR with dynamic field division, / SSV and / SSVHDR with static fields are now also supported. The basis is the field description in CSV\CSV_FIELDS
    so the order of the fields is fixed; Fields without content (for example in the event of a sensor failure) are not skipped but are output with ""
  • If Export \FIX_LIGHTNING is active (default), the last known values for lightning and lightning_time will be used as input data if the incoming values are missing
    since the lightning data in the GW1000/DP1500 are not stored in the NVRAM, these values are lost when the device is restarted
  • If Warning\LEAKAGE_WARNING is activated, warnings are issued via log, UDP, http or pushover (leakwarning) when a leak is detected
  • a backup of foshkplugin.conf is created at every successful start (foshkplugin.conf.foshkbackup)
  • Overview page http://ipaddress:portnumber outputs with "?units=e" values in American system of units (inch, mph, ...) ; can be combined with "/status"

Version 0.06 - 02.08.2020

  • Revision of the storm warning function, output of air pressure trend 1h / 3h and value of change of air pressure 1h / 3h
  • WU-Forward from AqPM2.5 if PM-sensor is present (only pm25_ch1 is forwarded!)
  • AQI calculation activated with EVAL_DATA = True and existing DP200/WH41/43
  • Experimental: Forward the PM2.5 value to as type LD, the ID must be entered under FWD_SID in the config file
  • Battery warning via log and UDP implemented; if the supplied batt value falls below an internally defined threshold, a warning is issued
  • Fixed issue with output of the name of the sensor again supplying data (SENSOR_MANDATORY)
  • The status of warnings for storms, thunderstorms, sensors and batteries are stored temporarily and are therefore retentive
  • WU-Forward / JSON renaming from solar radiation to solar radiation
  • WU-Forward / JSON support for soil moisture sensors
  • WU-Forward: keys with empty value are not transmitted
  • WU-Forward: Upload of dewptf (was dewpt) and rainin (was rainratein) fixed
  • new formula for dew point calculation (dewpoint) active (requires math)
  • now sends a response code 200 to the sender when http data is received
  • UDP message for time at wswarning changed from "time:" to "time="
  • for all get / post actions: check the return value 200..202 -> ok (was 200 only)
  • Text errors in help fixed
  • Update of; Fixed a bug when creating the conf file
  • Forward of the input data possible without conversion via UDP as type RAWUDP
  • Forward of the input data possible without conversion via EW / POST as type RAWEW
  • Forward of output data in CSV-format via http/POST as type CSV
  • Forward of input data without conversion via http/POST as type RAWCSV
  • Forward of output data as for Loxone to another target/network via UDP - with additional status
  • Forward timeout handling adjusted (now 3 seconds)
  • Output language can be set via LANGUAGE = DE / EN etc. in the config file
  • Plugin can be terminated with a UDP command and requested to send the current status (System.shutdown, Plugin.getStatus)
  • debug mode enable/disable via UDP-command Plugin.debug=enable/disable
  • Separator selectable on http-GET with /RAW
  • new http-GET command /STRING to get the input-line via http with selectable separator
  • status messages can now be queried in /JSON and when outputting via /STRING or /UDP
  • simple authentication via AUTH_PWD implemented; data and requests are only accepted via http if the specified password is contained in the URL (hint: use the PASSKEY-string in Ecowitt-mode)
  • hide PASSKEY-value in Log-Files if AUTH_PWD activated
  • Handling of unnecessary quotation marks in the config file adjusted
  • Preparation for upcoming soil/water temperature sensor WH34 (tf_chNc, tf_battN - where N = 1..8)
  • Status also available via http/GET: http://ipaddress:portnumber/FOSHKplugin/status outputs status wswarning, sensorwarning, batterywarning, ...
  • Fake mode implemented: Values of an indoor sensor (WH31 / DP50) can be output as values of an outdoor sensor WH32 (temperature, air humidity)
  • Updatewarning implemented, reports an available update for the weather station via log/UDP and possibly via http
  • For thunderstorm warnings, tswarning is now output as status instead of tstormwarning - Attention! This affects all outputs both via UDP and via http!

Version 0.05 - 26.04.2020

  • Sturmwarnung bleibt für 60 Minuten nach letzter Grenzwertunter-/überschreitung aktiv; Zeitraum kann via STORM_EXPIRE im Config-File angepasst werden
  • Übermittlung des UV-Wertes im WU-Format angepasst, nun in Großbuchstaben UV= statt uv=
  • Patch-Funktion für Weather4Loxone ist nun unabhängig von der genutzten Weather4Loxone-Version (vorhandene wird nicht überschrieben sondern angepasst)

Version 0.04 - 20.02.2020

  • default-config angepasst - Kommentare hinter Block nicht zulässig!
  • verbesserte Buttons (CSS) - Schiebeschalter nun grau bei "off" und grün bei "on"
  • erweiterte CGI-Debug-Funktion; default: off; enable mit $myDebug = 1 in der index.cgi
  • myDebug für zusätzliche Debug-Informationen auch im Python-Programm implementiert (default: False)
  • Beschreiben der Wetterstation via WS-Set sollte nun (endlich) vollumfänglich funktionieren
  • Id & Key in den Einstellungen der Wetterstation werden ignoriert und nicht vom Plugin überschrieben

Version 0.03 - 18.01.2020

  • USE_METRIC wieder funktional (jetzt also auch imperiale Werte per UDP und CSV möglich)
  • weitere mögliche Probleme beim Setzen der Wetterstationsparameter via WS-Set behoben (Path wird nun immer auf defaults gesetzt)
  • Prüfung der nutzbaren LoxBerry-Ports (http/udp) optimiert
  • Kommunikation mit der Wetterstation überarbeitet - nun jeweils 5 Versuche bei Lesen und Schreiben
  • besseres Logging/Debugging bei Fehlern bei Set-WS; "buntere" und besser parse-bare Log-Files; ### entfernt
  • generic: conf-File - Vorlage und Hilfstexte überarbeitet
  • Ignorierliste Forward\FWD_IGNORE für Forwards eingebaut: definiert - kommasepariert - Felder, die NICHT verschickt werden sollen
  • Forward\FWD_TYPE=UDP/EW/RAW für http-Forward der Werte (UDP-Ausgabezeile) an andere Ziele als WU eingeführt
  • nun bis zu 10 Forwards mit unterschiedlichen Einstellungen möglich (aktuell nur im Config-File zu pflegen: Forward-1..9 analog zu Forward)
  • Watchdog: kommen seit 3*eingestelltem Intervall keine Werte von der Wetterstation, Fehler melden!
    es erfolgt EINE Warnung und bei erneuter Übermittlung der Wetterstation eine Entwarnung im Log sowie per UDP:
    SID=FOSHKweather wswarning=1 last=346611722
    SID=FOSHKweather wswarning=0 last=346616459
    standardmäßig aktiv; kann im Config-File deaktiviert werden: Warning\WSDOG_WARNING=False
    Intervall kann im Config-File eingestellt werden: Warning\WSDOG_INTERVAL=3
    Warnung auch in Loxone-Vorlage enthalten
  • Alarm senden (Log, UDP) wenn Sensor (auch mehrere) keine Daten liefert (etwa weil Akku/Batterie leer)
    SID=FOSHKweather sensorwarning=1 missed=wh65batt time=347196201
    SID=FOSHKweather sensorwarning=1 back=wh65batt time=347196201
    aktuell nur im Config-File zu pflegen:
    Warning\SENSOR_WARNING=True sowie Warning\SENSOR_MANDATORY="wh65batt"
  • Sturmwarnung: fällt oder steigt der Luftdruck um mehr als 1.75 Hektopascal in einer Stunde, erfolgt eine Warnung vor Starkwind/Sturm
    es erfolgt EINE Warnung und bei Entspannung des Luftdrucks eine Entwarnung im Log und per UDP:
    SID=FOSHKweather stormwarning=1 time=346611722
    SID=FOSHKweather stormwarning=0 time=346616459
    standardmäßig aktiv; kann im Config-File deaktiviert werden: Warning\STORM_WARNING=False
    WarnDiff kann im Config-File eingestellt werden: Warning\STORM_WARNDIFF=1.75
    Warnung auch in Loxone-Vorlage enthalten
  • Vorbereitung Wassersensor WH55 und Blitzsensor WH57 (noch unklar ob lightning_time = timestring oder unixtime!)
  • preupgrade-Script: Upgrade-Verzeichnisse werden nun auch ohne Elternverzeichnis angelegt (mkdir -p)
  • preuninstall-script entfernt; Deinstallation erfolgt bei LoxBerry ab v2.0.1.1 im uninstall-Script
  • Web-Oberfläche: Anzeige der Versionsnummer eingebaut (um Nachfragen zur verwendeten Version im Fehlerfall zu minimieren)
  • UDP-Versand an das Zielsystem lässt sich mit UDP_ENABLE=False abschalten
  • Ignorierliste für den UDP-Versand eingeführt: Config\UDP_IGNORE (nur im Config-File zu pflegen)

Version 0.02 - 28.12.2019

  • ### aus FWD-Log-Nachricht entfernt
  • Umrechnung temp1f in temp1c für Innensensor auf Kanal 1 implementiert
  • Timeout bei sendReboot, setWSconfig und getWSINTERVAL von 1 auf 2 Sekunden erhöht (somit sollte WS-Set sicherer funktionieren)
  • Probleme beim Setzen der Wetterstationsparameter via WS-Set behoben (Id & Key werden - wenn nicht schon vorhanden - gesetzt)
  • Umstellung der LoxBerry-Versionsnummerierung damit zukünftig die Auto-Update-Funktion greifen kann

Version 0.01 - 15.12.2019

  • erste öffentliche Version


  • accepts http messages from a weather station (DP1500, GW1000, HP1000SE, Sainlogic 7 in 1, ELV WS980WiFi, Eurochron EFWS 2900, ???) locally in WU or Ecowitt protocol via network
  • does not require cloud services or internet connection
  • sends the converted metric or imperial values via UDP to any host or via broadcast in the network
  • saves the converted or imperial data sorted and / or extracted as CSV
  • enables forwarding to up to 20 servers that are not supported by the weather station itself (e.g. Awekas, PWSWeather, Windy or, but you could also use WU in a different interval)
  • can feed Meteotemplate and Weathercloud (from v0.07)
  • can serve as an Ecowitt relay (forward in Ecowitt protocol) for Personal Weather Tablet, weewx, PWS Dashboard and any other program expecting Ecowitt-data
  • can forward incoming WU and Ecowitt messages via UDP - also as a broadcast - as they come in
  • is able to convert between WU and Ecowitt (within limits)
  • can answer queries in WU protocol
  • Integrated web server provides the last data record in http, UDP, CSV, RAW and JSON format as well as a simple website
  • various watchdogs and warnings can be configured (battery, connection weather station and sensors, storm, thunderstorm, ...)
  • calculates some extra data (dew point, AQI, ...)
  • provides the Weather4Loxone plugin with the measured values from local weather station
  • No additional software is required (WS View only for teaching new sensors or for configuring the standard forwarding services)
  • also works without Loxone / LoxBerry as a systemd service on Linux-systems (a Raspi should be powerful enough) for connecting other systems ( )
  • is free of charge


/CSVHDRthe field names (the header) of the last data record are output as CSV semicolon separated. If units=e is also specified, the fields for the imperial values are output.
/CSVall reported metric values of the last data record are output as CSV semicolon separated (units=e supplies the imperial values)
/SSVHDRthe field names (the header) configured in CSV\CSV_FIELDS are output as CSV semicolon separated.
/SSVall reported metric values of the last data record are output as CSV semicolon separated with fixed asignment based on CSV\CSV_FIELDS (units=e supplies the imperial values)
/UDPthe last UDP string is output via http; with additional ?status in URL the output will also include all status.
/RAWthe data set supplied by the weather station is output unchanged via http; separator can be changed with separator=Z, where Z is a single character
/STRINGoutput the converted data record and the current status separated with ";" via http; by adding units=e in the URL will output with the imp. values; separator can be changed with separator=Z, where Z is a single character. With additional ?status in URL the output will also include all status.
example: http://ipadresse:port/STRING?units=e?separator=, will output imp. values with comma as separator
/JSONoutput via http as JSON (metric by default; by adding units=e in the URL, the output is made with the imp. values). With additional ?status in URL the output will also include all status (wswarning, sensorwarning, stormwarning, ...).
/getvalue?key=[keyname]output the value only for given keyname; any keyname is allowed (RAW, converted); if keyname not found "" wil be output - usefull for processing values via curl or wget
/simple website with the current metric data in tabular form - status includes all status-messages; additional units=e shows all values in imperial
/FOSHKplugin/statestatus of the service; if active: "running"
/FOSHKplugin/statusstatus of the service, watchdog, missing sensor, battery, for storm, thunderstorm, ... as a simple webpage

enable debug mode for extended messages in the log file


disable debug mode for extended messages in the log file


temporarily enable push notification via Pushover (configuration must exist!) - from v0.07


temporarily disable push notification via Pushover - from v0.07

/FOSHKplugin/patchW4L"Patch" a Weather4Loxone installation (copy local grabber scripts and activate local retrieval by W4L)
/FOSHKplugin/recoverW4LRestore the original Weather4Loxone configuration before "patching"
/observations/current/json/units=mFeedback of a WU-compatible data record with metric values (°C, kmh, mm, hPa)
/observations/current/json/units=eFeedback of the WU-compatible data record with imperial values (°F, mph, in, inHg)

Feedback of a W4L-compatible current.dat:

1575925088 | Mon, Dec 09, 2019 21:58:08 +0100 | CET | Europe / Berlin | +0100 | Hohen Neuendorf || DE |||| 6.0 | 6.0 | 92 | Südsüdost | 154 | 2.88 | 5.41 | 6.0 | 1000.2 | 5.1 || 0.00 | 5.1 | 0 | 1.8 | 0.51 ||||||||||||||||


Download: (current stable version v0.06) (public beta- version v0.07)

# create a local directory
# sudo mkdir /opt/FOSHKplugin
# change into the created directory
# cd /opt/FOSHKplugin
# get the current version of the plugin via wget
# wget -N
# or use a local zip-file
# unpack ZIP-File
# unzip
# Allow execute right for (this script)
# chmod u+x
# Run (this script)
# sudo ./ --install






WUWU, EWGETWeather Underground (WU-->WU or EW-->WU)
RAWWU, EWGETlike input (WU-->WU or EW-->EW)
UDPGETWU, EWGETlike output to Loxone with header and possibly conversion, however, URL-compatible with "&" instead of spaces
WCWU, EWGETWeathercloud (from v0.07)
MTWU, EWGETMeteotemplate (API) - from v0.07
AMBWU, EWGETAmbient Weather - from v0.07
AWEKASWU, EWGETAwekas (API) - from v0.07
EWWU, EWPOSTenhanced Ecowitt (WU-->EW or EW-->EW)
RAWEWWU, EWPOSTuntouched Ecowitt (EW-->EW or WU-->EW)
LDWU, (only PM2.5, PM10, Temp, Humidity, rel. Pressure, abs. Presssure)
CSVWU, EWPOSTlike output to Loxone with possibly conversion, with semicolon as separator instead of spaces but without header
RAWCSVWU, EWPOSTlike input (WU-->WU or EW-->EW), with semicolon as separator instead of spaces but without header
UDPWU, EWUDPlike output to Loxone with header and possibly conversion via UDP (FWD_URL = destination:port)
RAWUDPWU, EWUDPlike input-Format but transmission via UDP (EW→EW via UDP or WU→WU via UDP)


and - if recognized as a Ambient Weather station (from v0.07):
isAmbientWeather and (batt in key or batleak in key) and value = 0


FWD_URL =[WU-ID]&PASSWORD=[WU-Password]&action=updateraw&
FWD_URL =[siteid]&siteAuthenticationKey=[siteAuthenticationKey]&
#Weathercloud (from v0.07):
FWD_URL =[weathercloudid]&key=[key]&
#Meteotemplate (from v0.07):
FWD_INTERVAL = 60         # should be shorter than 5 minutes
FWD_URL =[meteotemplatepwd]&
#Awekas (from v0.07)-API:
FWD_CMT = forward im Awekas-API-Format
FWD_SID = Awekas-ID
FWD_PWD = Awekas-password


for Gateway DP1500/GW1000:

soil moisture sensors DP100/WH51:

soilbatt1..8 (battery in volt)

for Multi-Temp/Hum-sensors DP50/WH31:

batt1..8 (battery-Status; 1 = Alarm, 0 = ok)

for PM-sensors DP200/WH41/WH43:

pm25batt1..4 (Battery-Status; 5 = max)
pm25_AQIlvl_ch1..4 (Level 1..6)
pm25_AQIlvl_avg_24h_ch1..4 (Level 1..6)


running (1 = startet, 0 = stopped)
loxtime (Loxone-time)
wswarning (weather station does not send data)
sensorwarning (mandatory sensor is missing)
batterywarning (Battery-warning)
stormwarning (Stormwarning)
tswarning (Thunderstorm-warning)
updatewarning (Firmware-update available)
leakwarning (Leakage present)

for lightning sensor WH57/DP60:

lightning (distance last lightning in km)
lightning_time (time of last lightning Unixtime)
lightning_loxtime (time of last lightning Loxone-time)
lightning_num (count of lightnings)
wh57batt (Battery-Status; 5 = max)

for soil/water-temp-sensor WH34WN34:

tf_chNc (temperature in °C; N=1..8)
tf_battN (battery; N=1..8)

for water sensor WH55:
leak_ch1..4 (1=Alarm, 0=ok)
leakbatt1..4 (Battery-Status; 5 = max)

for 2- or 3-wing outdoor sensor WH3000SE All-In-One or HP1000SE All-In-One (WH65):

baromabshpa (abs. air pressure in hPa)
wh65batt (1 for warning, 0=ok)
ptrend1 (air pressure-trend 1h: 1=rising, 0=equal,-1=falling)
pchange1 (air pressure change in 1h in hPa)
ptrend3 (air pressure-trend 3h: 1=rising, 0=equal, -1=falling)
pchange3 (air pressure change in 3h in hPa)
wproglvl (weather prognose level)
wprogtxt (weather prognose text)
wnowlvl (current weather level)
wnowtxt (current weather text)


titleget push notifications for critical status changes on the smartphone/tablet (from v0.07)

get push notifications for critical status changes on the smartphone/tablet (from v0.07)

In addition to notification via UDP, availability as status via http and logging in the log file, important status changes (e.g. firmware update, sensor, watchdog, battery, storm and thunderstorm warnings) can also be sent to any mobile device (iOS , Android) as push notification, FOSHKplugin uses the API of Pushover.
Pushover is a one-time purchase app (no subscription!) that listens in the background for incoming messages from the pushover server.
If configured accordingly, FOSHKplugin sends these critical warnings via API call via the Internet to the Pushover cloud service, which then immediately searches for contact with the devices stored there and delivers the message immediately.
In the mobile device itself, these push notifications then arrive - depending on the setting - with or without sound and/or vibration or silently and are displayed both on the lock screen and in the notification bar. If available and configured accordingly, the notification LED also lights up or flashes.
With adjustable time schedules, you can specify the time periods during which the messages are sent silently within Pushover.
Besides the one-off purchase price for the app, there are no other hidden costs. At least if you stay below the free 7500 (!) notifications per month.
I've experimented with it for a few days now and I'm thrilled! The delivery takes place reliably and promptly - within a few (here 1-2) seconds (provided that the Internet is available).


  1. get the app Pushover from the respective store (Android, iOS)
  2. Start the Pushover app and assign credentials
  3. Log in via web browser:
  4. Make a note of the key under "Your User Key", this must be specified for PO_USER in the FOSHKplugin config file foshkplugin.conf
  5. Generate an API token for FOSHKplugin under "Your Applications" (Create an Application / API Token) - the key specified under API Token/Key must be specified under PO_TOKEN in the FOSHKplugin config file - as app notification icon you could use this 
  6. Adjust config foshkplugin.conf: Pushover\PO_ENABLE=True Pushover\PO_USER="Your User Key" and Pushover\PO_TOKEN=API-TOKEN:
    PO_ENABLE = True
    PO_USER = userkey
    PO_TOKEN = token
    It is not necessary to enter a URL under PO_URL. This setting would overwrite the internally predefined pushover URL.
  7. Restart FOSHKplugin

From now on there should be a push notification for all important status changes.
The sending of push messages is activated with the switch PO_ENABLE = True in the config file. Sending is deactivated by default (False).
Push notifications from FOSHKplugin can also be activated and deactivated during runtime, provided the correct credentials are stored in the config file.
This is done via http via any web browser by calling up the page http://ipaddress:port/FOSHKplugin/pushover=enable (activate) or http://ipaddress:port/FOSHKplugin/pushover=disable (deactivate). The port is the port specified in the config file under LBH_PORT.
This is also possible via the UDP interface of FOSHKplugin: sending "Plugin.pushover=enable" to the IP address of the host and the port on which FOSHKplugin is running (LBU_PORT in the config file) activates the sending; "Plugin.pushover=disable" deactivates this.
Any errors when sending push notifications as well as activating/deactivating during runtime are logged in the standard log file.

You'll get Pushover-notifications (if configured) in case of:
SENSOR_WARNING = True and a key (any key that is normally contained in the output string of the weather station, such as wh65batt, leakbatt1, soilbatt1, pm25batt1 ...) given in SENSOR_MANDATORY is missed in the incoming string from the weatherstation:
<WARNING> missing data for mandatory sensor [key]
<OK> mandatory data for sensor [key] is back again

BATTERY_WARNING = True and the battery level of all known sensors is below a defined threshold:
<WARNING> battery level for sensor(s) [key] is critical - please swap battery
<OK> battery level for all sensors is ok again

STORM_WARNING = True and air pressure is risen/dropped more than value given in STORM_WARNDIFF within one hour or more than value given in STORM_WARNDIFF3H within three hours:
<WARNING> possible storm - air pressure has risen/dropped more than [threshold] hPa within [count] hours! ([time/pressure before] --> [time/pressure now] diff: [difference] hPa)
<OK> storm warning cancelled after [duration] minutes ([time/pressure before] --> [time/pressure now] diff: [difference] hPa)

TSTORM_WARNING = True and WH57 present and at leas TSTORM_WARNCOUNT lighnings within TSTORM_WARNDIST km were detected:
<WARNING> thunderstorm recognized (start=[warntime])
<OK> thunderstorm warning cancelled after [duration] minutes (start=[warntime] end=[now] last=[last lightning time] lcount=[#lightnings] ldmin=[min. distance] ldmax=[max. distance] ldavg=[avg. distance])

WSDOG_WARNING = True and there were WSDOG_INTERVAL intervals no data received from weatherstation:
<WARNING> weather station has not reported data for more than [count] seconds (WSDOG_INTERVAL send-intervals)
<OK> weather station has reported data again

WSDOG_RESTART > WSDOG_INTERVAL and there's still no data from weatherstation:
<WARNING> weather station has not reported data for more than [count] seconds (WSDOG_INTERVAL send-intervals) - restarting

after a start of FOSHKplugin and afterwards every UPD_INTERVAL seconds if there's a newer firmware available for your weatherstation:
<WARNING> firmware update for [model] available - current: [current version] avail: [remote version] use the app [app name] to update!


titleOperation of multiple FOSHKplugin instances on one host (from v0.07)

Operation of multiple FOSHKplugin instances on one host (from v0.07)

In some constellations it can make sense to operate several instances of FOSHKplugin in parallel - for example, to process data from several GW1000/DP1500/HP2551C.
Basically this is possible, but it does require a few points to be observed during the installation and, if necessary, a few adjustments to the configuration file foshkplugin.conf.
In any case, each instance must be installed in its own directory!

The http port (LBH_PORT) and the port for incoming UDP messages (LBU_PORT) must not be used more than once on a host. Therefore, a different http port and a different UDP port must be specified for each instance.
The installation routine automatically ensures that ports are not assigned twice.

By default, a service with the name foshkplugin is created, which can be started and stopped and which starts again automatically in the event of an unscheduled termination.
When running the installation script, however, a different name can be defined for the service.
Important: a different name must be selected for the service for each instance on the same host in order to be able to operate these different services in parallel!
I recommend naming all FOSHKplugin services with "foshkplugin" - followed by a serial number or a more specific description: for example foshkplugin-GW1 or foshkplugin-Location1.

If FOSHKplugin is also used to send UDP messages, it may be necessary to change the identifier for these messages so that the target system can assign the incoming messages.
Every outgoing UDP message contains a "SID = FOSHKweather" as an indicator of the data source. If you want to change this identifier, you can specify a different identifier in the config file under Config\DEF_SID.
When the UDP messages are parsed on the processing side, this can then be used as a trigger for further processing.
Alternatively, a distinction can also be made on the basis of the UDP port number (LOX_PORT).

This adjustment is not required for pure forward operation without UDP transmission.


titleUpload to Ambient Weather (from v0.07)

Upload to Ambient Weather (from v0.07)

Ambient Weather has a very modern web interface, a nice app, a connection to IFTTT, Amazon Alexa and Google Assistant and can be queried via API interface.
Access to this service requires that you also deliver your weather data there. This is possible with weather stations from Ambient Weather as well as with devices from third-party manufacturers.
A special license is required for operation with devices from third-party manufacturers: VW-ANET. This license is purchased once, is bound to a MAC address and can be used with FOSHKplugin to send data from an Ecowitt station to Ambient Weather.

To connect a GW1000 from Ecowitt (or Froggit DP1500) to Ambient Weather, the following steps are necessary:

  1. Registration with Ambient Weather - create an account at
  2. Purchase of the VW ANET license stating the MAC address of the GW1000 / DP1500 via
  3. Configuration of FOSHKplugin:
    A new forward must be created in the config file:

    Code Block
    FWD_CMT = Forward for Ambient Weather
    FWD_URL =
    FWD_ENABLE = True
    FWD_STATUS = False
    FWD_INTERVAL = 180

    The device is authenticated via the PASSKEY sent through the GW1000/DP1500 automatically, but can be adjusted in the config file with FWD_SID = [PASSKEY] if necessary.

From now on, FOSHKplugin also sends the incoming data from the GW1000/DP1500 to Ambient Weather.
No additional hardware or software is required.


titleSaving lightning values for the GW1000/DP1500 (WH2650/WH2600Pro)

Saving lightning values for the GW1000/DP1500 (WH2650/WH2600Pro)

With every restart and apparently after a certain time, the GW1000/DP1500 (probably also the WH2650/WH2600Pro) loses the values for the time of the last lightning (lightning_time) and its distance (lightning).
From this point on only empty values are sent instead of the actual values.
In the Ecowitt output string it looks like this:

Code Block

PWS Dashboard or Personal Weather Tablet (PWT) can no longer display lightning data because they do not buffer these values.

With the option Export\FIX_LIGHTNING (enabled by default) FOSHKplugin from v0.07 writes these values with every change that does not contain "" as a value into the config-file as:

Code Block
last_lightning_time = 1610556044
last_lightning = 27

and uses these saved values when empty values are received from the weather station for all forwards and export to UDP/CSV/...

When the device is started up for the first time, these values are of course not known to FOSHKplugin. Therefore these values can be entered manually in the config file.
Ecowitt declares the time of the last lightning as Unixtime (UTC). The indication of the distance is saved in kilometers.
A service such as is recommended to calculate the corresponding Unixtime yourself. But you can also just look in the raw-log file and transfer the values.