Ich habe eine Wetterstation eingebunden.
Wenn ich die Wetterstation händisch aktualisiere werden alle Daten korrekt ausgelesen und aktualisiert
<Server>/fhem?detail=Wetterstation
Es wird auch die nächst Aktualiserungszeit gesetzt.
Allerdings werden die Daten niemals neue eingelesen.
Hier ist meien Definition der Wetterstation
define Wetterstation http://api.wunderground.com/weatherstation/WXCurrentObXML.asp?ID=I3POTTSC2 60
attr Wetterstation userattr event-on-change-reading reading01Name reading02Name reading03Name reading04Name reading05Name reading06Name reading01Regex reading02Regex reading03Regex reading04Regex reading05Regex reading06Regex
attr Wetterstation event-on-change-reading Temperatur Luftfreuchtigkeit Windrichtung Sonneneinstrahlung Luftdruck Windgeschwindigkeitmph
attr Wetterstation reading01Name Luftdruck
attr Wetterstation reading02Name Luftfreuchtigkeit
attr Wetterstation reading03Name Sonneneinstrahlung
attr Wetterstation reading04Name Temperatur
attr Wetterstation reading05Name Windgeschwindigkeitmph
attr Wetterstation reading06Name Windrichtung
attr Wetterstation reading01Regex <pressure_mb>([\d\.]+)
attr Wetterstation reading02Regex <relative_humidity>([\d\.]+)
attr Wetterstation reading03Regex <solar_radiation>([\d]+)
attr Wetterstation reading04Regex <temp_c>([\d\.]+)
attr Wetterstation reading05Regex <wind_mph>([\d\.]+)
attr Wetterstation reading06Regex <wind_degrees>([\d]+)
attr Wetterstation room Wohnzimmer
attr Wetterstation userReadings Windgeschwindigkeitkmh {sprintf("%.1f",(ReadingsVal($name,"Windgeschwindigkeitmph",0)*1.609344))}
attr Wetterstation stateFormat {sprintf("Temperatur %.0f °C Windgeschwindigkeit:%.0f km/h Sonneneinstrahlung: %d", ReadingsVal($name,"Temperatur",0) ,ReadingsVal($name,"Windgeschwindigkeit",0), ReadingsVal($name,"Sonneneinstrahlung",0))}
Es soltlen meiner Meinung nach alle 60 Sekunden die Werte aktualisiert werden
Ich kann auch keine Fehlermeldung im Log sehen und im Eventmonitor sehe ich auch nichts von der Wetterstation
Hi,
ich sehe in deinem define keinerlei Gerät / Modul.
Ich glaube gar nicht, dass so irgendetwas funktioniert :-[
Ich kenne auch nur wunderground als Wetter. Aber ich weiß ja nicht alles :D
https://commandref.fhem.de/#Wunderground
Alle 60 sec den Provider nach dem Wetter fragen wird dazu führen, dass Du im Internet irgendwann gesperrt wirst ;D
Gruß Otto
Dürfte beim kopieren etwas gelöscht haben.
So sollte es korrekt heißen
define Wetterstation HTTPMOD http://api.wunderground.com/weatherstation/WXCurrentObXML.asp?ID=I3POTTSC2 60
Mit dieser Url bekomme ich ein XML mit den aktuellen Werten das ich mit Regex den entsprechenden Readings zuweise.
Das funktioniert so weit so gut.
Aber die Werte werden eben nicht automatisch aktualisiert
Und warum nicht das Modul? Das macht es deutlich einfacher.
Wenn Du den Titel deines Posts noch korrigierst damit sich nicht alle wundern ;)
Werden die Daten nicht neu eingelesen oder nicht neu angezeigt? Es werden im FHEMWEB nicht alle Werte automatisch refreshed! Kannst Du aber meines Wissen mit dem FHEMWEB attr refresh einstellen.
Diese Zeile finde ich auch sehr merkwürdig: :o
attr Wetterstation userattr event-on-change-reading reading01Name reading02Name reading03Name reading04Name reading05Name reading06Name reading01Regex reading02Regex reading03Regex reading04Regex reading05Regex reading06Regex
Gruß Otto
Zitat von: Goofy180173 am 26 Juni 2018, 12:43:33
Aber die Werte werden eben nicht automatisch aktualisiert
Bei mir schon, allerdings verstehe ich dein userattr nicht
attr Wetterstation userattr event-on-change-reading reading01Name reading02Name reading03Name reading04Name reading05Name reading06Name reading01Regex reading02Regex reading03Regex reading04Regex reading05Regex reading06Regex
und ein kleiner Fehler in deinem stateFormat:
ReadingsVal($name,"Windgeschwindigkeit",0)
Ein Reading Windgeschwindigkeit hast du aber nicht, nur Windgeschwindigkeitmph & Windgeschwindigkeitkmh
Ich hab das von hier geklaut
https://www.meintechblog.de/2016/09/informationen-von-high-end-wetterstationen-kostenlos-in-das-smart-home-einbinden/ (https://www.meintechblog.de/2016/09/informationen-von-high-end-wetterstationen-kostenlos-in-das-smart-home-einbinden/)
und entsprechend angepasst (nicht ganz fehlerfrei)
Der Status wird jetzt korrekt gesetzt aber immer noch nicht aktualisiert:-(
Wie kann ich prüfen ob alle 60 Sekunden die Werte neu geholt werden?
Im Eventlog sehe ich nichts und auch im Log ist kein Eintrag
Wunderground hat mit dem Verkauf an IBM aufgehört, neue Daten zur Verfügung zu stellen. Meine Wetterstationen haben irgendwann Ende Mai aufgehört, neue Daten zu liefern.
Siehe https://forum.fhem.de/index.php/topic,59646.msg806261.html#msg806261
Wenn ich die Url aufrufe bekomme ich aktuelle Daten.
Von daher scheint es keine Probleme zu geben.
Zitat von: Goofy180173 am 26 Juni 2018, 13:51:53
Ich hab das von hier geklaut
https://www.meintechblog.de/2016/09/informationen-von-high-end-wetterstationen-kostenlos-in-das-smart-home-einbinden/ (https://www.meintechblog.de/2016/09/informationen-von-high-end-wetterstationen-kostenlos-in-das-smart-home-einbinden/)
und entsprechend angepasst (nicht ganz fehlerfrei)
Der Status wird jetzt korrekt gesetzt aber immer noch nicht aktualisiert:-(
Wie kann ich prüfen ob alle 60 Sekunden die Werte neu geholt werden?
Im Eventlog sehe ich nichts und auch im Log ist kein Eintrag
Eventuell solltest Du Dich an den Verfasser des Artikels aus dem Jahre 2016 wenden. Er kann Dir helfen. Alternativ gibt es einen Wikieintrag im FHEM Wiki und sogar ein fertiges Modul https://forum.fhem.de/index.php?topic=59646.0
Dazu benötigt man allerdings einen Key und den gibt's nicht mehr gratis.
Daher kann jemand der neu ist das Modul nicht verwenden.
Und was hält Dich an diesen Wetterdienst? Schau Dir Yahoo (weather Modul) oder Proplanta an.
Das die Wetterstation in der Nachbarschaft ist und ich aktuelle Wind und Sonnenwerte für meine Wintergartenbeschattung hab.
Ich wollte mir halt eine eigene Wetterstation sparen.
mach mal ein list von deinem httpmod device
list Wetterstation
Und änder das ganze mal auf eine stunde update.
Zitat von: Goofy180173 am 25 Juni 2018, 23:19:28
Wenn ich die Wetterstation händisch aktualisiere werden alle Daten korrekt ausgelesen und aktualisiert
<Server>/fhem?detail=Wetterstation
Es wird auch die nächst Aktualiserungszeit gesetzt.
Hi,
wenn ich Deinen ersten Post richtig verstehe, drückst Du quasi Refresh im Browser und hast danach aktuelle Daten!? Ist das so?
Gruß Otto
Ja, es werden alle Werte neu ausgelesen und auch die Zeit für die nächste Aktualisierung gesetzt.
Allerdings findet diese nie statt.
HTTPMOD sollte aber eigentlich die Werte automatisch entsprechend dem eingestellten Intervall holen.
Ansonsten bräuchte ich diesen ja nicht.
Du hast kein Problem die Daten vom Webserver zu holen, Du hast lediglich ein Anzeige Problem!?
Und wie gesagt, Deine Definition ist fehlerhaft! Aber das kam ja schon zweimal. Hast Du das korrigiert!?
Ja, ich hab's schon korrigiert.
Die Daten werden korrekt ausgelesen und dargestellt.
Sie werden lediglich nicht automatisch nach dem eingestellten Intervall aktualisiert.
Ich kann auch nirgends sehen ob die Daten nach der eingestellten Zeit nochmals abgeholt werden.
Es gibt dazu weder einen Eintrag im Eventlog noch im Logfile.
Ich glaub einfach, dass die Daten nicht neu geholt und daher auch nicht aktualisiert werden.
Zitat von: CoolTux am 26 Juni 2018, 14:59:02
mach mal ein list von deinem httpmod device
list Wetterstation
Und änder das ganze mal auf eine stunde update.
Kann ich erst wenn ich zuhause bin.
Hab ein update und shutdown restart gemacht.
Leider hat sich fhem nicht mehr gestartet.
Aber ich poste das Ergebnis.
Das ist die Ausgabe von list Wetterstation
Internals:
BUSY 0
CHANGED
DEF http://api.wunderground.com/weatherstation/WXCurrentObXML.asp?ID=I3POTTSC2 60
Interval 60
LASTSEND 1530038328.66323
MainURL http://api.wunderground.com/weatherstation/WXCurrentObXML.asp?ID=I3POTTSC2
ModuleVersion 3.4.4 - 5.5.2018
NAME Wetterstation
NR 42
STATE Temperatur 14.1 °C Windgeschwindigkeit:0.0 km/h Sonneneinstrahlung: 4
TRIGGERTIME 1530038388.66211
TRIGGERTIME_FMT 2018-06-26 20:39:48
TYPE HTTPMOD
addr http://api.wunderground.com:80
auth 0
buf
code 200
compress 1
conn
data
displayurl http://api.wunderground.com/weatherstation/WXCurrentObXML.asp?ID=I3POTTSC2
header
host api.wunderground.com
httpheader HTTP/1.0 200 OK
Accept-Ranges: bytes
Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: http://www.wunderground.com
Content-Encoding: gzip
Content-Type: text/xml
Server: Apache/2.2.15 (CentOS)
X-Cacheable: YES
X-CreationTime: 0.007
X-Varnish: 1156623095
Content-Length: 914
Expires: Tue, 26 Jun 2018 18:38:48 GMT
Cache-Control: max-age=0, no-cache
Pragma: no-cache
Date: Tue, 26 Jun 2018 18:38:48 GMT
Connection: close
Vary: Accept-Encoding
httpversion 1.0
hu_blocking 0
hu_filecount 72
hu_port 80
hu_portSfx
ignoreredirects 0
loglevel 4
path /weatherstation/WXCurrentObXML.asp?ID=I3POTTSC2
protocol http
redirects 0
timeout 2
url http://api.wunderground.com/weatherstation/WXCurrentObXML.asp?ID=I3POTTSC2
value 0
QUEUE:
READINGS:
2018-06-26 20:38:48 Luftdruck 1026.3
2018-06-26 20:38:48 Luftfreuchtigkeit 94
2018-06-26 20:38:48 Sonneneinstrahlung 4
2018-06-26 20:38:48 Temperatur 14.1
2018-06-26 20:38:48 Windgeschwindigkeitkmh 2.1
2018-06-26 20:38:48 Windgeschwindigkeitmph 1.3
2018-06-26 20:38:48 Windrichtung 13
REQUEST:
data
header
ignoreredirects 0
retryCount 0
type update
url http://api.wunderground.com/weatherstation/WXCurrentObXML.asp?ID=I3POTTSC2
value 0
defptr:
readingBase:
Luftdruck reading
Luftfreuchtigkeit reading
Sonneneinstrahlung reading
Temperatur reading
Windgeschwindigkeitmph reading
Windrichtung reading
readingNum:
Luftdruck 01
Luftfreuchtigkeit 02
Sonneneinstrahlung 03
Temperatur 04
Windgeschwindigkeitmph 05
Windrichtung 06
readingOutdated:
requestReadings:
update:
Luftdruck reading 01
Luftfreuchtigkeit reading 02
Sonneneinstrahlung reading 03
Temperatur reading 04
Windgeschwindigkeitmph reading 05
Windrichtung reading 06
sslargs:
Attributes:
event-on-change-reading Temperatur Luftfreuchtigkeit Windrichtung Sonneneinstrahlung Luftdruck Windgeschwindigkeitmph
reading01Name Luftdruck
reading01Regex <pressure_mb>([\d\.]+)
reading02Name Luftfreuchtigkeit
reading02Regex <relative_humidity>([\d\.]+)
reading03Name Sonneneinstrahlung
reading03Regex <solar_radiation>([\d]+)
reading04Name Temperatur
reading04Regex <temp_c>([\d\.]+)
reading05Name Windgeschwindigkeitmph
reading05Regex <wind_mph>([\d\.]+)
reading06Name Windrichtung
reading06Regex <wind_degrees>([\d]+)
room Wohnzimmer
stateFormat {sprintf("Temperatur %.1f °C Windgeschwindigkeit:%.1f km/h Sonneneinstrahlung: %d", ReadingsVal($name,"Temperatur",0) ,ReadingsVal($name,"Windgeschwindigkeit",0), ReadingsVal($name,"Sonneneinstrahlung",0))}
userReadings Windgeschwindigkeitkmh {sprintf("%.1f",(ReadingsVal($name,"Windgeschwindigkeitmph",0)*1.609344))}
userattr event-on-change-reading reading01Name reading01Regex reading02Name reading02Regex reading03Name reading03Regex reading04Name reading04Regex reading05Name reading05Regex reading06Name reading06Regex
Zitat von: Goofy180173 am 26 Juni 2018, 20:40:30
event-on-change-reading Temperatur Luftfreuchtigkeit Windrichtung Sonneneinstrahlung Luftdruck Windgeschwindigkeitmph
aber laut command.ref :
Zitatevent-on-change-reading
Dieses Attribut enthält eine durch Kommata getrennte Liste von "readings".
Ich hab jetzt nochmal den Code angepasst von dort wo ich ihn geklaut hab
define wetter_mitterau HTTPMOD http://api.wunderground.com/weatherstation/WXCurrentObXML.asp?ID=I3POTTSC2 60
attr wetter_mitterau event-on-change-reading dewpointTemperature,humidity,pressure,solarRadiation,solarUV,temperature,windDegrees,windGust,windSpeed,windSpeedkmh
attr wetter_mitterau readingsName_dewpointTemperature dewpointTemperature
attr wetter_mitterau readingsName_humidity humidity
attr wetter_mitterau readingsName_pressure pressure
attr wetter_mitterau readingsName_solarRadiation solarRadiation
attr wetter_mitterau readingsName_solarUV solarUV
attr wetter_mitterau readingsName_temperature temperature
attr wetter_mitterau readingsName_windDegrees windDegrees
attr wetter_mitterau readingsName_windGust windGust
attr wetter_mitterau readingsName_windSpeed windSpeed
attr wetter_mitterau readingsRegex_dewpointTemperature <dewpoint_c>([\d\.]+)
attr wetter_mitterau readingsRegex_humidity <relative_humidity>([\d\.]+)
attr wetter_mitterau readingsRegex_pressure <pressure_mb>([\d\.]+)
attr wetter_mitterau readingsRegex_solarRadiation <solar_radiation>([\d\.]+)
attr wetter_mitterau readingsRegex_solarUV <UV>([\d\.]+)
attr wetter_mitterau readingsRegex_temperature <temp_c>(\+|-?[\d\.]+)
attr wetter_mitterau readingsRegex_windDegrees <wind_degrees>([\d\.]+)
attr wetter_mitterau readingsRegex_windGust <wind_gust_mph>([\d\.]+)
attr wetter_mitterau readingsRegex_windSpeed <wind_mph>([\d\.]+)
attr wetter_mitterau stateFormat Temperatur: temperature°C Luftfeuchtigkeit: humidity% Taupunkt: dewpointTemperature°C Windgeschwindikeit: windSpeedkmh km/h
attr wetter_mitterau userReadings windSpeedkmh {sprintf("%.1f",(ReadingsVal($name,"windSpeed",0)*1.609344))}
So funktioniert alles
Die Werte werden alle 60 Sekunden geholt und wenn sich was ändert aktualisiert
Ich wollte halt das ganze in Deutsch und die Warnings im Log weghaben
the attribute readingsRegex_windGust should no longer be used. Please use reading01Regex
Werd versuchen das ganze schrittweise umzubauen und schauen woran es liebt.
Vielleicht auch einfach an Groß und Kleinschreibung
Danke an alle die mir geholfen haben.
Ich werde es jetzt schrittweise umbauen und das nächste mal genauer schauen wenn ich etwas nehme und verändere.
Es waren die Beistriche :(
Für alle die auch Daten von Wunderground lesen wollen.
Hier eine funktionierende Wetterstation
#Wetterstation
define Wetterstation HTTPMOD http://api.wunderground.com/weatherstation/WXCurrentObXML.asp?ID=I3POTTSC2 600
attr Wetterstation event-on-change-reading Temperatur,Luftfreuchtigkeit,Windrichtung,Sonneneinstrahlung,Luftdruck,Windgeschwindigkeitmph,Windgeschwindigkeitkmh, Taupunkt
attr Wetterstation reading01Name Luftdruck
attr Wetterstation reading01Regex <pressure_mb>([\d\.]+)
attr Wetterstation reading02Name Luftfreuchtigkeit
attr Wetterstation reading02Regex <relative_humidity>([\d\.]+)
attr Wetterstation reading03Name Sonneneinstrahlung
attr Wetterstation reading03Regex <solar_radiation>([\d]+)
attr Wetterstation reading04Name Temperatur
attr Wetterstation reading04Regex <temp_c>([\d\.]+)
attr Wetterstation reading05Name Windgeschwindigkeitmph
attr Wetterstation reading05Regex <wind_mph>([\d\.]+)
attr Wetterstation reading06Name Windrichtung
attr Wetterstation reading06Regex <wind_degrees>([\d]+)
attr Wetterstation reading07Name Taupunkt
attr Wetterstation reading07Regex <dewpoint_c>([[\d\.]+)
attr Wetterstation showBody 1
attr Wetterstation stateFormat {sprintf("Temperatur %.1f °C Windgeschwindigkeit:%.1f km/h Sonneneinstrahlung: %d ", ReadingsVal($name,"Temperatur",0) ,ReadingsVal($name,"Windgeschwindigkeit",0), ReadingsVal($name,"Sonneneinstrahlung",0))}
attr Wetterstation userReadings Windgeschwindigkeitkmh {sprintf("%.1f",(ReadingsVal($name,"Windgeschwindigkeitmph",0)*1.609344))}
Moin,
ich sage es gern nochmal: Das Wetter ändert sich nicht alle 60 sec!
Du belastest mit dieser Abfragerate völlig unnötig dein System, das Internet, die Webseite des Providers.
Du postest das als Beispiel und jeder, der in diesem Moment ohne nachzudenken per Copy&Paste Deinen Code mal schnell probiert, macht mit.
Gruß Otto
Ich hab die Zeit in meinem letzten Post auf 600 gestellt.
Das sollte jede Rollosteuerung auch reichen :)
:D
Danke
ich habe gerade gesehen, unsere Freunde von MeinTechblog haben in ihrem Code sogar 30 sec drin stehen. :-X
Ich habe mal noch einen Kommentar dazu und zum Fehlerhaften Code hinterlassen.
Gruß Otto
mit "set upgradeAttributes" hätte man die "umstellung" auch per knopfdruck machen können. ;)
ZitatSet-Commands
As defined by the attributes set.*Name
If you set the attribute enableControlSet to 1, the following additional built in set commands are available:
interval
set new interval time in seconds and restart the timer
reread
request the defined URL and try to parse it just like the automatic update would do it every Interval seconds without modifying the running timer.
stop
stop interval timer.
start
restart interval timer to call GetUpdate after interval seconds
upgradeAttributes
convert the attributes for this device from the old syntax to the new one.
atributes with the description "this attribute should not be used anymore" or similar will be translated to the new syntax, e.g. readingsName1 to reading01Name.
storeKeyValue
stores a key value pair in an obfuscated form in the file system. Such values can then be used in replacements where the mode is "key" e.g. to avoid storing passwords in the configuration in clear text
define wetter_mitterau HTTPMOD http://wunderground.com/weatherstation/WXCurrentObXML.asp?ID=I3POTTSC2 60
funktioniert noch, jedoch mit anderer Url (ohne"api.").