(vermutlich gelöst) Problem bei owfs-Abfrage per HTTPMOD

Begonnen von wolliballa73, 03 November 2024, 10:01:51

Vorheriges Thema - Nächstes Thema

wolliballa73

Hallo allerseits,

ich bin mir nicht ganz schlüssig, ob dieses Thema hier reingehört oder eher zu den Modulen...

Da ich momentan damit kämpfe, meine 1wire-Sensoren über OWServer wieder komplett funktionsfähig zu bekommen (s. separater Thread https://forum.fhem.de/index.php?topic=139123.0), versuche ich nun einen Workaround über HTTPMOD.
Leider funktioniert das nur sehr eingeschränkt; im fhem.log taucht beim Versuch, die Werte (bzw. URL) abzurufen:
Read callback: Error: read from http://localhost:2121 timed out
Ein Abruf der URL direkt auf der Linux-Shell mit wget liefert direkt den HTML-Code, und auch wenn ich von einem PC aus die URL aufrufe (dann mit FQDN statt localhost), bekomme ich innerhalb von 1-2 Sekunden die Seite von owhttpd geliefert.

Irgendwo scheine ich also ein Timing-Problem zu haben; SEHR gelegentlich kommt dann doch mal ein erfolgreicher Versuch zustande.

define 90TempNord HTTPMOD http://localhost:2121/28.B684DE030000 300
attr 90TempNord reading1Name temperature
attr 90TempNord reading1Regex <TR><TD><B>latesttemp</B></TD><TD>([\d\.]+)</TD></TR>
attr 90TempNord room Heizung,OWDevice
attr 90TempNord stateFormat {sprintf("%.1f",ReadingsVal($name,"temperature",0))."°C"}
#   BUSY       0
#   CFGFN     
#   DEF        http://localhost:2121/28.B684DE030000 300
#   FUUID      67273b8a-f33f-e35a-3dca-d7b2ab941822e9b2
#   Interval   300
#   MainURL    http://localhost:2121/28.B684DE030000
#   ModuleVersion 4.2.0 - 11.8.2023
#   NAME       90TempNord
#   NOTIFYDEV  global
#   NR         1563
#   NTFY_ORDER 50-90TempNord
#   STATE      0.0°C
#   TYPE       HTTPMOD
#   value     
#   CompiledRegexes:
#   HttpUtils:
#     NAME       
#     addr       http://localhost:2121
#     auth       0
#     buf       
#     data       
#     displayurl http://localhost:2121/28.B684DE030000
#     header     
#     host       localhost
#     httpversion 1.0
#     ignoreredirects 1
#     loglevel   4
#     path       /28.B684DE030000
#     protocol   http
#     redirects  0
#     timeout    2
#     url        http://localhost:2121/28.B684DE030000
#     sslargs:
#   QUEUE:
#   READINGS:
#   REQUEST:
#     context    reading
#     data       
#     header     
#     ignoreredirects 0
#     num        unknown
#     retryCount 0
#     type       update
#     url        http://localhost:2121/28.B684DE030000
#
setstate 90TempNord 0.0°C

CU,
Matze

wolliballa73

Update:
ich hab den timeout mal auf 30 Sekunden gestellt, dann klappt zumindest der "reread" meistens.

Leider kachelt der owhttpd gelegentlich ab; ich vermute mal, weil die Anfragen gemäß "interval" alle geballt gleichzeitig kommen :-(
CU,
Matze

wolliballa73

...noch ein Update: nachdem ich interval nun etwas entzerrt habe, sodass nicht immer gleich 10 Anfragen gleichzeitig reinkommen, sieht das Ganze erstmal stabil aus. Damit komm ich über den Winter und schau in Ruhe, wie ich die 1wire-Werte wieder über OWFS oder mit anderen Busmastern über OWX reinbekomme.

VG
Matze
CU,
Matze

raisinsoven

Zitat von: wolliballa73 am 03 November 2024, 10:51:43Update:
ich hab den timeout mal auf 30 Sekunden gestellt, dann klappt zumindest der "reread" meistens.

Leider kachelt der owhttpd gelegentlich ab; ich vermute mal, weil die Anfragen gemäß "interval" alle geballt gleichzeitig kommen :-(

Es ist eigentlich ein ziemlich dummer Fehler. Dies ist wirklich schwer zu vermeiden, wenn es auftritt.