WebCAM: Wetterdaten im Bild

Für allgemeine Software
Antworten
Benutzeravatar
olicat
Offline
Beiträge: 2003
Registriert: 07 Dez 2020, 20:33
Wohnort: Hohen Neuendorf
Hat sich bedankt: 26 mal
Danksagung erhalten: 411 mal
Kontaktdaten:

WebCAM: Wetterdaten im Bild

#1

Beitrag von olicat »

Hi!

Ich bastle gerade an den Bildern, die die Ecowitt HP10 liefert.
Da suche ich noch ein paar Ideen zur Verbindung mit Messdaten ...

Welche Inhalte oder Wetterdaten haettet ihr denn gern in einem Bild Eurer Webcam? Und in welcher sinnvollen Reihenfolge?
Oder wuerdet ihr lieber mit einem ASCII-Overlay arbeiten?

Hier wuerde per cron automatisch alle x Minuten ein Foto der Kamera ausgeloest werden, in das dann per ffmpeg die aktuellen Wetterdaten "eingestempelt" werden. Das Script kuemmert sich dann auch um den Upload zum Webserver.

Das Script kann ich gern zur Verfuegung stellen.

Oliver
Dateianhänge
output.jpg
output.jpg (100.42 KiB) 1859 mal betrachtet
Benutzeravatar
LE-Wetter
Offline
Beiträge: 1261
Registriert: 27 Nov 2020, 19:58
Wohnort: Leipzig
Hat sich bedankt: 37 mal
Danksagung erhalten: 96 mal
Kontaktdaten:

Re: WebCAM: Wetterdaten im Bild

#2

Beitrag von LE-Wetter »

Sieht gut aus.
Letzter Regen war ... - ist immer noch eine ganz interessante Geschichte, die viele interessiert
Liebe Grüße von LE-Wetter

WS 888, Mete-On1 und WD4000 und
alte Barometer, Blitzortung, Radioaktivität
https://www.leipzig-wetter.de
www.regionalwetter-sa.de
www.wetternetz-sachsen.de
https://wetterhistorie-leipzig.de
bluestarbln
Offline
Beiträge: 256
Registriert: 28 Nov 2020, 22:04
Wohnort: Berlin
Hat sich bedankt: 3 mal
Danksagung erhalten: 5 mal
Kontaktdaten:

Re: WebCAM: Wetterdaten im Bild

#3

Beitrag von bluestarbln »

Ui...das ist ja wirklich spannend und hat tatsächlich etwas. Mich würde auch eine Tagaufnahme interessieren.
Stationsseite: https://www.wetterportal.net || Blog: https://online-tagebuch.eu/wetterblog || Technik: Davis Vantage Pro 2 Aktiv Plus 6163EU, Wetter- u. Webseitenserver: Synology DS218+
Benutzeravatar
olicat
Offline
Beiträge: 2003
Registriert: 07 Dez 2020, 20:33
Wohnort: Hohen Neuendorf
Hat sich bedankt: 26 mal
Danksagung erhalten: 411 mal
Kontaktdaten:

Re: WebCAM: Wetterdaten im Bild

#4

Beitrag von olicat »

Hi!
Mich würde auch eine Tagaufnahme interessieren.
Naja, die Bilder der Kamera sind leider nicht ganz so spannend. Mir geht es gerade eher um die Moeglichkeiten des Einblendens von aktuellen Wetterdaten. Da ich jetzt gerade natuerlich kein Licht fuer aktuelle Bilder habe, hier ein Beispiel mit aktuellen Daten und einem Foto von Ende September.
Mit einer besseren Kamera gaebe es vermutlich bessere Bilder. Das Einblenden der aktuellen Daten sollte jedoch ebenso funktionieren.

Mein Favorit ist das Layout mit der schwarzen Banderole und weisser Schrift (output3.jpg).

Oliver
Dateianhänge
output.jpg
output.jpg (166.46 KiB) 1822 mal betrachtet
output2.jpg
output2.jpg (170.71 KiB) 1822 mal betrachtet
output3.jpg
output3.jpg (163.46 KiB) 1822 mal betrachtet
Benutzeravatar
moppedhausi
Offline
Beiträge: 192
Registriert: 08 Dez 2020, 09:17
Wohnort: Willich
Hat sich bedankt: 69 mal
Danksagung erhalten: 7 mal
Kontaktdaten:

Re: WebCAM: Wetterdaten im Bild

#5

Beitrag von moppedhausi »

Guten Morgen Oliver,

das Script würde mich sehr interessieren.
Benutzeravatar
olicat
Offline
Beiträge: 2003
Registriert: 07 Dez 2020, 20:33
Wohnort: Hohen Neuendorf
Hat sich bedankt: 26 mal
Danksagung erhalten: 411 mal
Kontaktdaten:

Re: WebCAM: Wetterdaten im Bild

#6

Beitrag von olicat »

Hi!

Das Script ist noch nicht ganz fertig - jedenfalls nicht so, wie ich es gerne haette.
Aber der grundsaetzliche Ablauf ist der:

Das Script wird ueber einen cron-Job alle x Minuten gestartet und triggert dann folgende Dinge:

1. die Kamera macht per http-Request ein aktuelles Foto
Das ist bei der Ecowitt HP10 gegeben - wie das bei anderen Kameras ist, muss man pruefen.
Alternativ - etwa wenn die Kamera von sich aus alle x Sekunden ein Foto macht und es im Filesystem ablegt, greift man eben auf diese Datei zurueck.

2. das Script muss "irgendwie" Zugriff auf die aktuellen Wetterdaten erhalten
Bei Einsatz von FOSHKplugin ist das leicht - es ermoeglicht die Abfrage der zuletzt von der Wetterstation gemeldeten Werte
Die Werte sollten sich jedoch auch aus anderen bereits vorhandenen Dateien parsen lassen - etwa realtime.txt oder clientraw.txt.
GW1100, GW2000 und neuere HP25xx-Konsolen ermoeglichen eine Echtzeitabfrage, bei der die gemeldeten Werte dann als JSON zur Verfuegung stehen - auch das laesst sich dann sehr leicht parsen und weiterverarbeiten.
Ich hatte dazu hier mal den grundsaetzlichen Ablauf beschrieben und eben die Abfrage der Messwerte nachgetragen.

3. stehen Bild und Daten bereit, muessen diese beiden Dinge zusammengebracht werden
Dazu nutze ich hier ffmpeg - es gibt aber auch andere Loesungen dafuer.
Dabei werden die Messwerte an bestimmte Positionen im Bild eingetragen. Knifflig ist da eigentlich nur die Syntax - aber da hilft das Script als Vorlage wohl jetzt schon.

4. das "komponierte" Bild muss nun zum Zielort gebracht werden
Dies kann auf verschiedenen Wegen erfolgen - etwa per Dateisystem (bei lokalem Webserver) oder per ftp(s) oder http(s)/POST oder nfs oder ...
Das Script in der vorliegenden Version verschickt die fertige Bilddatei per http/POST an den Webserver. Dies erfordert aber auf Webserver-Seite ein Script, dass diese Datei entgegennimmt.
Einfacher ist da vermutlich eher die Bereitstellung per Dateisystem oder ftp(s).

Hier das Script:

Code: Alles auswählen

#!/bin/bash
# Script for gathering the current snapshot of a local HP10 camera with
# integration of current real time data via FOSHKplugin
# Phantasoft, Oliver Engel 06.11.2022
##################################################################

# set the HP10 camera ip
CAM=192.168.15.182

# name the output file
JPG=snapshot.jpg
#JPG=`date +%y%m%d%H%M%S`-snapshot.jpg

# name the cam (bottom left)
NAM="Hohen Neuendorf, Brandenburg"

# time format (bottom right)
#TIM=`date '+%Y/%m/%d %H:%M:%S'|sed 's/:/\\\:/g'`
TIM=`date '+%d.%m.%Y %H:%M:%S'|sed 's/:/\\\:/g'`

# remote destination for output file
DST="https://yourdomain.tld/some/where/specialscript.php"

# ip address of FOSHKplugin host to gather weather data from
ADR="http://192.168.15.236:8080"

# remote destination and credentials for ftp(s) access
FTPUSER=username
FTPPASS=password
FTPLOC=ftp://yourdomain.tld/path/to/img-dir/

###################################################################

# get the current picture
curl --silent -o ${JPG} "http://${CAM}/capture"

# for additional weather data in the picture
# if you don't use FOSHKplugin but a current GW1100/GW2000 or HP25xxC you may use it's realtime data instead:
# WS=192.168.15.229
# temp=`curl -s http://${WS}/get_livedata_info?|jq ".common_list[0].val"|sed 's/\"//g'`
# humidity=`curl -s http://${WS}/get_livedata_info?|jq ".common_list[1].val"|sed 's/\"//g'|sed 's/\%//g'`
# ... - see: https://www.wxforum.net/index.php?topic=43811.msg453151#msg453151
tempc=`curl ${ADR}/getvalue?key=tempc 2>/dev/null`
humidity=`curl ${ADR}/getvalue?key=humidity 2>/dev/null`
baromrelhpa=`curl ${ADR}/getvalue?key=baromrelhpa 2>/dev/null`
windspeedkmh=`curl ${ADR}/getvalue?key=windspeedkmh 2>/dev/null`
dailyrainmm=`curl ${ADR}/getvalue?key=dailyrainmm 2>/dev/null`
leafwetness_ch1=`curl ${ADR}/getvalue?key=leafwetness_ch1 2>/dev/null`
solarradiation=`curl ${ADR}/getvalue?key=solarradiation 2>/dev/null`
uv=`curl ${ADR}/getvalue?key=uv 2>/dev/null`
sunhours=`curl ${ADR}/getvalue?key=sunhours 2>/dev/null`
wnowtxt=`curl ${ADR}/getvalue?key=wnowtxt 2>/dev/null`
wprogtxt=`curl ${ADR}/getvalue?key=wprogtxt 2>/dev/null`
dateutc=`curl ${ADR}/getvalue?key=dateutc 2>/dev/null|sed 's/:/\\\:/g'`

# ohne Banderole
ffmpeg -y -hide_banner -loglevel error -i ${JPG} -vf "[in] \
drawtext=font=monospace:fontsize=25:fontcolor=white:text='${NAM}':x=10:y=(h)-30, \
drawtext=font=monospace:fontsize=25:fontcolor=white:text='${TIM}':x=(w)-295:y=(h)-30, \
drawtext=font=monospace:fontsize=20:fontcolor=white:text='Temperatur\:\   ${tempc}\°C':x=10:y=(h)-120, \
drawtext=font=monospace:fontsize=20:fontcolor=white:text='Luftfeuchte\:\  ${humidity}\\\\\%':x=10:y=(h)-95, \
drawtext=font=monospace:fontsize=20:fontcolor=white:text='Luftdruck\:\    ${baromrelhpa}hPa':x=10:y=(h)-70, \
\
drawtext=font=monospace:fontsize=20:fontcolor=white:text='Wind\:\         ${windspeedkmh}kmh':x=400:y=(h)-120, \
drawtext=font=monospace:fontsize=20:fontcolor=white:text='Regen/Tag\:\    ${dailyrainmm}mm':x=400:y=(h)-95, \
drawtext=font=monospace:fontsize=20:fontcolor=white:text='Blattfeuchte\:\ ${leafwetness_ch1}\\\\\%':x=400:y=(h)-70, \
\
drawtext=font=monospace:fontsize=20:fontcolor=white:text='Solar\:\        ${solarradiation}W/m²':x=790:y=(h)-120, \
drawtext=font=monospace:fontsize=20:fontcolor=white:text='UVI\:\          ${uv}':x=790:y=(h)-95, \
drawtext=font=monospace:fontsize=20:fontcolor=white:text='Sonnenstd\:\    ${sunhours}h':x=790:y=(h)-70, \
\
drawtext=font=monospace:fontsize=20:fontcolor=white:text='Wetterlage\:\   ${wnowtxt}':x=1190:y=(h)-120, \
drawtext=font=monospace:fontsize=20:fontcolor=white:text='Vorhersage\:\   ${wprogtxt}':x=1190:y=(h)-95, \
drawtext=font=monospace:fontsize=20:fontcolor=white:text='UTC-Zeit\:\     ${dateutc}':x=1190:y=(h)-70 \
\
[out]" output.jpg 2>/dev/null

# mit weisser Banderole
ffmpeg -y -hide_banner -loglevel error -i ${JPG} -vf "[in] \
drawbox=y=1075:color=white@0.5:width=iw:height=125:t=max, \
drawtext=font=monospace:fontsize=25:fontcolor=black:text='${NAM}':x=10:y=(h)-30, \
drawtext=font=monospace:fontsize=25:fontcolor=black:text='${TIM}':x=(w)-295:y=(h)-30, \
drawtext=font=monospace:fontsize=20:fontcolor=black:text='Temperatur\:\   ${tempc}\°C':x=10:y=(h)-120, \
drawtext=font=monospace:fontsize=20:fontcolor=black:text='Luftfeuchte\:\  ${humidity}\\\\\%':x=10:y=(h)-95, \
drawtext=font=monospace:fontsize=20:fontcolor=black:text='Luftdruck\:\    ${baromrelhpa}hPa':x=10:y=(h)-70, \
\
drawtext=font=monospace:fontsize=20:fontcolor=black:text='Wind\:\         ${windspeedkmh}kmh':x=400:y=(h)-120, \
drawtext=font=monospace:fontsize=20:fontcolor=black:text='Regen/Tag\:\    ${dailyrainmm}mm':x=400:y=(h)-95, \
drawtext=font=monospace:fontsize=20:fontcolor=black:text='Blattfeuchte\:\ ${leafwetness_ch1}\\\\\%':x=400:y=(h)-70, \
\
drawtext=font=monospace:fontsize=20:fontcolor=black:text='Solar\:\        ${solarradiation}W/m²':x=790:y=(h)-120, \
drawtext=font=monospace:fontsize=20:fontcolor=black:text='UVI\:\          ${uv}':x=790:y=(h)-95, \
drawtext=font=monospace:fontsize=20:fontcolor=black:text='Sonnenstd\:\    ${sunhours}h':x=790:y=(h)-70, \
\
drawtext=font=monospace:fontsize=20:fontcolor=black:text='Wetterlage\:\   ${wnowtxt}':x=1190:y=(h)-120, \
drawtext=font=monospace:fontsize=20:fontcolor=black:text='Vorhersage\:\   ${wprogtxt}':x=1190:y=(h)-95, \
drawtext=font=monospace:fontsize=20:fontcolor=black:text='UTC-Zeit\:\     ${dateutc}':x=1190:y=(h)-70 \
\
[out]" output2.jpg 2>/dev/null

# mit schwarzer Banderole
ffmpeg -y -hide_banner -loglevel error -i ${JPG} -vf "[in] \
drawbox=y=1075:color=black@0.4:width=iw:height=125:t=max, \
drawtext=font=monospace:fontsize=25:fontcolor=white:text='${NAM}':x=10:y=(h)-30, \
drawtext=font=monospace:fontsize=25:fontcolor=white:text='${TIM}':x=(w)-295:y=(h)-30, \
drawtext=font=monospace:fontsize=20:fontcolor=white:text='Temperatur\:\   ${tempc}\°C':x=10:y=(h)-120, \
drawtext=font=monospace:fontsize=20:fontcolor=white:text='Luftfeuchte\:\  ${humidity}\\\\\%':x=10:y=(h)-95, \
drawtext=font=monospace:fontsize=20:fontcolor=white:text='Luftdruck\:\    ${baromrelhpa}hPa':x=10:y=(h)-70, \
\
drawtext=font=monospace:fontsize=20:fontcolor=white:text='Wind\:\         ${windspeedkmh}kmh':x=400:y=(h)-120, \
drawtext=font=monospace:fontsize=20:fontcolor=white:text='Regen/Tag\:\    ${dailyrainmm}mm':x=400:y=(h)-95, \
drawtext=font=monospace:fontsize=20:fontcolor=white:text='Blattfeuchte\:\ ${leafwetness_ch1}\\\\\%':x=400:y=(h)-70, \
\
drawtext=font=monospace:fontsize=20:fontcolor=white:text='Solar\:\        ${solarradiation}W/m²':x=790:y=(h)-120, \
drawtext=font=monospace:fontsize=20:fontcolor=white:text='UVI\:\          ${uv}':x=790:y=(h)-95, \
drawtext=font=monospace:fontsize=20:fontcolor=white:text='Sonnenstd\:\    ${sunhours}h':x=790:y=(h)-70, \
\
drawtext=font=monospace:fontsize=20:fontcolor=white:text='Wetterlage\:\   ${wnowtxt}':x=1190:y=(h)-120, \
drawtext=font=monospace:fontsize=20:fontcolor=white:text='Vorhersage\:\   ${wprogtxt}':x=1190:y=(h)-95, \
drawtext=font=monospace:fontsize=20:fontcolor=white:text='UTC-Zeit\:\     ${dateutc}':x=1190:y=(h)-70 \
\
[out]" output3.jpg 2>/dev/null

# upload snapshot via http/POST
curl -k -F "image=@${JPG}" -F "user=user" -F "password=password" -F "filename=${JPG}" -F "fwd_type=SAVE" ${DST}

# uploadsnapshot via ftp(s)
JPG=output3.jpg
# unsecured ftp
#curl --silent -p --insecure "${FTPLOC}" --user "${FTPUSER}:${FTPPASS}" -T ${JPG}
# ftps
curl --silent -p --insecure --ssl "${FTPLOC}" --user "${FTPUSER}:${FTPPASS}" -T ${JPG}
Soweit als "Teaser" - es ist noch "work in progress".
Es handelt sich um ein bash-Script fuer Linux-Systeme - grundsaetzlich sollte es auch unter Windows als Batch und Task im Aufgabenplaner funktionieren. Jedoch sind dazu vermutlich einige Anpassungen noetig. Ich habe das nicht getestet.

Oliver
Benutzeravatar
WWKB
Offline
Beiträge: 27
Registriert: 06 Jan 2021, 07:56
Wohnort: Kaifenheim
Danksagung erhalten: 10 mal
Kontaktdaten:

Re: WebCAM: Wetterdaten im Bild

#7

Beitrag von WWKB »

Nutze ebenfalls ein Bash Script und habe recht gute Erfahrungen mit der Bildbearbeitung durch ImageMagick gemacht.
Damit blende ich nicht nur Schrift ein, sondern auch farbige Linien und Flächen und auch Grafiken aus Dateien (zB Windrose).
Außerdem mache ich damit die vermeintliche links/rechts bzw auf/ab Bewegung der Kamera.

Das Ergebnis hatte ich ja bereits gepostet bzw. auf meiner Wetterseite zu sehen.

Gruß
W.
Wolfgang Wagner
Davis Vantage Vue
https://wetter.wagner-wolfgang.de/
Benutzeravatar
olicat
Offline
Beiträge: 2003
Registriert: 07 Dez 2020, 20:33
Wohnort: Hohen Neuendorf
Hat sich bedankt: 26 mal
Danksagung erhalten: 411 mal
Kontaktdaten:

Re: WebCAM: Wetterdaten im Bild

#8

Beitrag von olicat »

Danke Wolfgang,

jetzt wo Du es schreibst faellt mir das auch wieder ein.
Das Ergebnis hatte ich ja bereits gepostet bzw. auf meiner Wetterseite zu sehen.
Der Vollstaendigkeit und der besseren Wiederfindbarkeit halber - das war im thread Messwerte im Webcambild.
Da haette mein Beitrag vermutlich besser reingepasst. Sorry.

Oliver
Antworten