Neueste Beiträge

#11
Sonstiges / Aw: HTTPMOD liest bei Clever-T...
Letzter Beitrag von Marko1976 - 02 Juni 2026, 10:45:38
Ergänzung2:
Beim nächsten automatischen Abruf der Daten sind die Readings wieder weg und es taucht logischerweise damit wieder der Ersatzwert "0" auf.

Die Frage ist also wieso funktioniert es nach einer Aktualisierung des DEF's und manuellem Reread , nicht aber beim automatischen Abruf. Und warum werden die bestehenden Readings gelöscht. Soweit ich Fhem verstanden habe bleiben einmal angelegte Readings existent, auch wenn sie keine Werte haben.

Hier das List des gleichen Device nach dem automatischen Abruf:
Internals:
   BUSY       0
   DEF        https://www.clever-tanken.de/tankstelle_details/15360 600
   FUUID      69d76140-f33f-7706-a7d6-12051dc493774932
   FVERSION   98_HTTPMOD.pm:0.291590/2024-09-23
   Interval   600
   MainURL    https://www.clever-tanken.de/tankstelle_details/15360
   ModuleVersion 4.2.0 - 11.8.2023
   NAME       Tankstelle_HSe_ARAL_Roermonderstr
   NOTIFYDEV  global
   NR         588
   NTFY_ORDER 50-Tankstelle_HSe_ARAL_Roermonderstr
   STATE      Super E5: 0.01 €    *    Super E10: 0.01 €    *    Super Plus: 0.01 €    *    Diesel: 0.01 €
   TYPE       HTTPMOD
   eventCount 5048
   value     
   CompiledRegexes:
   HTTPCookieHash:
     csrftoken;:
       Name       csrftoken
       Options    expires=Tue, 01 Jun 2027 08:27:46 GMT; Max-Age=31449600; Path=/; SameSite=Lax
       Path       
       Value      ZU591SpNfTQHxRywgNTa07sW1fueCvAy
   HttpUtils:
     NAME       
     addr       https://www.clever-tanken.de:443
     auth       0
     data       
     displayurl https://www.clever-tanken.de/tankstelle_details/15360
     header     Cookie: csrftoken=ZU591SpNfTQHxRywgNTa07sW1fueCvAy
     host       www.clever-tanken.de
     httpversion 1.0
     ignoreredirects 1
     loglevel   4
     path       /tankstelle_details/15360
     protocol   https
     redirects  0
     timeout    10
     url        https://www.clever-tanken.de/tankstelle_details/15360
     sslargs:
   QUEUE:
   READINGS:
     2026-06-02 10:09:57   Bioethanol_avg  0
     2026-06-02 10:09:57   Bioethanol_complete 0
     2026-06-02 10:27:27   Bioethanol_old  0
     2026-06-02 10:09:57   CNG_avg         0
     2026-06-02 10:09:57   CNG_complete    0
     2026-06-02 10:27:27   CNG_old         0
     2026-06-02 10:37:27   Diesel_avg      1.83
     2026-06-02 10:37:27   Diesel_complete 0
     2026-06-02 10:37:27   Diesel_old      0
     2026-06-02 10:09:57   LNG_avg         0
     2026-06-02 10:09:57   LNG_complete    0
     2026-06-02 10:27:27   LNG_old         0
     2026-06-02 10:09:57   LPG_avg         1.12
     2026-06-02 10:37:27   LPG_complete    0
     2026-06-02 10:37:27   LPG_old         0
     2026-06-02 10:37:27   SuperE10_avg    1.84
     2026-06-02 10:37:27   SuperE10_complete 0
     2026-06-02 10:37:27   SuperE10_old    0
     2026-06-02 10:09:57   SuperE5_avg     1.21
     2026-06-02 10:37:27   SuperE5_complete 0
     2026-06-02 10:37:27   SuperE5_old     0
     2026-06-02 10:09:57   SuperPlus_avg   1.06
     2026-06-02 10:37:27   SuperPlus_complete 0
     2026-06-02 10:37:27   SuperPlus_old   0
     2026-06-02 10:09:57   Wasserstoff_avg 0
     2026-06-02 10:09:57   Wasserstoff_complete 0
     2026-06-02 10:27:27   Wasserstoff_old 0
   REQUEST:
     context    reading
     data       
     header     
     ignoreredirects 0
     num        unknown
     retryCount 0
     type       update
     url        https://www.clever-tanken.de/tankstelle_details/15360
   defptr:
     readingBase:
     readingNum:
     readingOutdated:
     readingSubNum:
     requestReadings:
       update:
Attributes:
   alias      ARAL in Karken (Roermonder Str.)
   enableControlSet 1
   event-min-interval .*:1800
   event-on-change-reading .*
   group      Informationen
   icon       fuel
   model      clever_tanken_single_station
   reading01Name Name
   reading01Regex <span class="strong-title" itemprop="name">(.*)</span>
   reading02Name Strasse
   reading02Regex <span itemprop="streetAddress">(.*)</span>
   reading03Name PLZ
   reading03Regex <span itemprop="http://schema.org/postalCode">(.*)</span>
   reading04Name Ort
   reading04Regex <span itemprop="http://schema.org/addressCountry">(.*)</span>
   reading05Name open_days
   reading05RegOpt g
   reading05Regex <div class="d-flex justify-content-between weak-body">\s*<span>\s*(.*)<\/span>
   reading06Name open_hours
   reading06RegOpt g
   reading06Regex <div class="d-flex justify-content-between weak-body">\s*<span>\s*.*<\/span>\s*<span>\s*(.*)<\/span>
   reading07Name last_update
   reading07Regex <span>Letzte Aktualisierung: (.*)</span>
   reading08Name Diesel
   reading08OExpr { ($val < 0.25) ? ReadingsNum($name,"Diesel-1",0) : $val }
   reading08Regex <div[^>]*class="price-type-name"[^>]*>Diesel<\/div>[\s\S]*?<span[^>]*id="current-price-\d+"[^>]*>([\d.]+)<\/span>[\s\S]*?<sup[^>]*id="suffix-price-\d+"[^>]*>(\d+)<\/sup>
   reading09Name SuperE10
   reading09OExpr { ($val < 0.25) ? ReadingsNum($name,"SuperE10-1",0) : $val }
   reading09Regex <div[^>]*class="price-type-name"[^>]*>Super E10<\/div>[\s\S]*?<span[^>]*id="current-price-\d+"[^>]*>([\d.]+)<\/span>[\s\S]*?<sup[^>]*id="suffix-price-\d+"[^>]*>(\d+)<\/sup>
   reading10Name SuperE5
   reading10OExpr { ($val < 0.25) ? ReadingsNum($name,"SuperE5-1",0) : $val }
   reading10Regex <div[^>]*class="price-type-name"[^>]*>Super E5<\/div>[\s\S]*?<span[^>]*id="current-price-\d+"[^>]*>([\d.]+)<\/span>[\s\S]*?<sup[^>]*id="suffix-price-\d+"[^>]*>(\d+)<\/sup>
   reading11Name SuperPlus
   reading11OExpr { ($val < 0.25) ? ReadingsNum($name,"SuperPlus-1",0) : $val }
   reading11Regex <div[^>]*class="price-type-name"[^>]*>ARAL Superplus<\/div>[\s\S]*?<span[^>]*id="current-price-\d+"[^>]*>([\d.]+)<\/span>[\s\S]*?<sup[^>]*id="suffix-price-\d+"[^>]*>(\d+)<\/sup>
   reading12Name LPG
   reading12OExpr { ($val < 0.25) ? ReadingsNum($name,"LPG-1",0) : $val }
   reading12Regex <div[^>]*class="price-type-name"[^>]*>LPG<\/div>[\s\S]*?<span[^>]*id="current-price-\d+"[^>]*>([\d.]+)<\/span>[\s\S]*?<sup[^>]*id="suffix-price-\d+"[^>]*>(\d+)<\/sup>
   reading13Name LNG
   reading13OExpr { ($val < 0.25) ? ReadingsNum($name,"LNG-1",0) : $val }
   reading13Regex <div[^>]*class="price-type-name"[^>]*>LNG<\/div>[\s\S]*?<span[^>]*id="current-price-\d+"[^>]*>([\d.]+)<\/span>[\s\S]*?<sup[^>]*id="suffix-price-\d+"[^>]*>(\d+)<\/sup>
   reading14Name CNG
   reading14OExpr { ($val < 0.25) ? ReadingsNum($name,"CNG-1",0) : $val }
   reading14Regex <div[^>]*class="price-type-name"[^>]*>CNG<\/div>[\s\S]*?<span[^>]*id="current-price-\d+"[^>]*>([\d.]+)<\/span>[\s\S]*?<sup[^>]*id="suffix-price-\d+"[^>]*>(\d+)<\/sup>
   reading15Name Bioethanol
   reading15OExpr { ($val < 0.25) ? ReadingsNum($name,"Bioethanol-1",0) : $val }
   reading15Regex <div[^>]*class="price-type-name"[^>]*>Bioethanol<\/div>[\s\S]*?<span[^>]*id="current-price-\d+"[^>]*>([\d.]+)<\/span>[\s\S]*?<sup[^>]*id="suffix-price-\d+"[^>]*>(\d+)<\/sup>
   reading16Name Wasserstoff
   reading16OExpr { ($val < 0.25) ? ReadingsNum($name,"Wasserstoff-1",0) : $val }
   reading16Regex <div[^>]*class="price-type-name"[^>]*>Wasserstoff<\/div>[\s\S]*?<span[^>]*id="current-price-\d+"[^>]*>([\d.]+)<\/span>[\s\S]*?<sup[^>]*id="suffix-price-\d+"[^>]*>(\d+)<\/sup>
   readingMaxAge 15
   readingMaxAgeReplacementMode delete
   readingOExpr $val =~ s/<[\d\D]+>//;;$val
   room       Information->Spritpreise
   stateFormat {
  sprintf("Super E5: %.2f €    *    Super E10: %.2f €    *    Super Plus: %.2f €    *    Diesel: %.2f €",
    ReadingsNum($name,"SuperE5-1",0) + 0.01,
    ReadingsNum($name,"SuperE10-1",0) + 0.01,
    ReadingsNum($name,"SuperPlus-1",0) + 0.01,
    ReadingsNum($name,"Diesel-1",0) + 0.01
  )
}
   timeout    10
   timestamp-on-change-reading .*
   userReadings Diesel_old { OldReadingsNum($name,"Diesel-1", ReadingsNum($name,"Diesel-1",0)) },
SuperE5_old { OldReadingsNum($name,"SuperE5-1", ReadingsNum($name,"SuperE5-1",0)) },
SuperE10_old { OldReadingsNum($name,"SuperE10-1", ReadingsNum($name,"SuperE10-1",0)) },
SuperPlus_old { OldReadingsNum($name,"SuperPlus-1", ReadingsNum($name,"SuperPlus-1",0)) },
LPG_old { OldReadingsNum($name,"LPG-1", ReadingsNum($name,"LPG-1",0)) },
LNG_old { OldReadingsNum($name,"LNG-1", ReadingsNum($name,"LNG-1",0)) },
CNG_old { OldReadingsNum($name,"CNG-1", ReadingsNum($name,"CNG-1",0)) },
Bioethanol_old { OldReadingsNum($name,"Bioethanol-1", ReadingsNum($name,"Bioethanol-1",0)) },
Wasserstoff_old { OldReadingsNum($name,"Wasserstoff-1", ReadingsNum($name,"Wasserstoff-1",0)) },

Diesel_complete { ReadingsNum($name,"Diesel-1", 0) + (ReadingsNum($name,"Diesel-2", 0) / 1000) },
SuperE5_complete { ReadingsNum($name,"SuperE5-1", 0) + (ReadingsNum($name,"SuperE5-2", 0) / 1000) },
SuperE10_complete { ReadingsNum($name,"SuperE10-1", 0) + (ReadingsNum($name,"SuperE10-2", 0) / 1000) },
SuperPlus_complete { ReadingsNum($name,"SuperPlus-1", 0) + (ReadingsNum($name,"SuperPlus-2", 0) / 1000) },
LPG_complete { ReadingsNum($name,"LPG-1", 0) + (ReadingsNum($name,"LPG-2", 0) / 1000) },
LNG_complete { ReadingsNum($name,"LNG-1", 0) + (ReadingsNum($name,"LNG-2", 0) / 1000) },
CNG_complete { ReadingsNum($name,"CNG-1", 0) + (ReadingsNum($name,"CNG-2", 0) / 1000) },
Bioethanol_complete { ReadingsNum($name,"Bioethanol-1", 0) + (ReadingsNum($name,"Bioethanol-2", 0) / 1000) },
Wasserstoff_complete { ReadingsNum($name,"Wasserstoff-1", 0) + (ReadingsNum($name,"Wasserstoff-2", 0) / 1000) },

Diesel_avg { ReadingsNum("Diesel","Durchschnitt",0) },
SuperE5_avg { ReadingsNum("SuperE5","Durchschnitt",0) },
SuperE10_avg { ReadingsNum("SuperE10","Durchschnitt",0) },
SuperPlus_avg { ReadingsNum("SuperPlus","Durchschnitt",0) },
LPG_avg { ReadingsNum("LPG","Durchschnitt",0) },
LNG_avg { ReadingsNum("LNG","Durchschnitt",0) },
CNG_avg { ReadingsNum("CNG","Durchschnitt",0) },
Bioethanol_avg { ReadingsNum("Bioethanol","Durchschnitt",0) },
Wasserstoff_avg { ReadingsNum("Wasserstoff","Durchschnitt",0) },

   userattr   
   verbose    3
#12
Sonstiges / Aw: HTTPMOD liest bei Clever-T...
Letzter Beitrag von Marko1976 - 02 Juni 2026, 10:35:08
Ergänzung zum Post oben:

Ich habe jetzt bei einem Device ReadingsVal überall in ReadingsNum geändert und die Schreiweise auf numerische Ersatzwerte kontrolliert. Regex101 sagt das die Regex korrekt ist und funktioniert. Doch egal was ich machen, es werden weiterhin keine Readings erstellt. Habe es mit reread, clearCookies und upgradeAttributes probiert. Nichts hat geholfen, obwohl es laut Regex101 funktioniert.

Dann habe ich zufällig das DEF geändert und die Intervallzeit von 600 auf 900 gestellt und bestätigt um das ganze danach direkt rückgängig zu machen und erneut ein reread gemacht. Und was soll ich sagen, es funktioniert (für den Moment) wieder. Die Readings werden erzeugt und dadurch funktioniert alles andere auch, die Ersatzwerte werden gar nicht erst geschrieben, da die Readings gefunden werden.

Der Fehler hat also offenbar irgendetwas mit dem DEF zu tun oder lässt sich zumindest durch eine Aktualisierung dessen umgehen. Die Frage ist halt nur wie lange dies hält und warum.

Hier das List des aktualisierten Readings:
Internals:
   BUSY       0
   DEF        https://www.clever-tanken.de/tankstelle_details/15360 600
   FUUID      69d76140-f33f-7706-a7d6-12051dc493774932
   FVERSION   98_HTTPMOD.pm:0.291590/2024-09-23
   Interval   600
   MainURL    https://www.clever-tanken.de/tankstelle_details/15360
   ModuleVersion 4.2.0 - 11.8.2023
   NAME       Tankstelle_HSe_ARAL_Roermonderstr
   NOTIFYDEV  global
   NR         588
   NTFY_ORDER 50-Tankstelle_HSe_ARAL_Roermonderstr
   STATE      Super E5: 1.90 €    *    Super E10: 1.84 €    *    Super Plus: 2.02 €    *    Diesel: 1.84 €
   TYPE       HTTPMOD
   eventCount 5047
   value     
   CompiledRegexes:
   HTTPCookieHash:
     csrftoken;:
       Name       csrftoken
       Options    expires=Tue, 01 Jun 2027 08:27:46 GMT; Max-Age=31449600; Path=/; SameSite=Lax
       Path       
       Value      ZU591SpNfTQHxRywgNTa07sW1fueCvAy
   HttpUtils:
     NAME       
     addr       https://www.clever-tanken.de:443
     auth       0
     code       200
     compress   1
     conn       
     data       
     displayurl https://www.clever-tanken.de/tankstelle_details/15360
     header     
     host       www.clever-tanken.de
     httpheader HTTP/1.1 200 OK
Date: Tue, 02 Jun 2026 08:27:45 GMT
Server: Apache/2.4.52 (Ubuntu)
Vary: Cookie,Accept-Encoding
Content-Encoding: gzip
Content-Type: text/html; charset=utf-8
Set-Cookie: csrftoken=ZU591SpNfTQHxRywgNTa07sW1fueCvAy; expires=Tue, 01 Jun 2027 08:27:46 GMT; Max-Age=31449600; Path=/; SameSite=Lax
X-Correlation-Uid: ah6UAYl8rhR8uZkjOMWyHgAAAhs
Connection: close
     httpversion 1.0
     hu_blocking 0
     hu_filecount 1
     hu_port    443
     hu_portSfx
     ignoreredirects 1
     loglevel   4
     path       /tankstelle_details/15360
     protocol   https
     redirects  0
     timeout    10
     url        https://www.clever-tanken.de/tankstelle_details/15360
     sslargs:
   QUEUE:
   READINGS:
     2026-06-02 10:09:57   Bioethanol_avg  0
     2026-06-02 10:09:57   Bioethanol_complete 0
     2026-06-02 10:27:27   Bioethanol_old  0
     2026-06-02 10:09:57   CNG_avg         0
     2026-06-02 10:09:57   CNG_complete    0
     2026-06-02 10:27:27   CNG_old         0
     2026-06-02 10:27:45   Diesel-1        1.83
     2026-06-02 10:27:45   Diesel-2        9
     2026-06-02 09:59:57   Diesel_avg      1.83
     2026-06-02 10:27:45   Diesel_complete 1.839
     2026-06-02 10:27:45   Diesel_old      1.83
     2026-06-02 10:09:57   LNG_avg         0
     2026-06-02 10:09:57   LNG_complete    0
     2026-06-02 10:27:27   LNG_old         0
     2026-06-02 10:27:45   LPG-1           1.12
     2026-06-02 10:27:45   LPG-2           9
     2026-06-02 10:09:57   LPG_avg         1.12
     2026-06-02 10:27:45   LPG_complete    1.129
     2026-06-02 10:27:45   LPG_old         1.12
     2026-06-02 10:27:45   Name            ARAL
     2026-06-02 10:27:45   Ort             Heinsberg
     2026-06-02 10:27:45   PLZ             52525
     2026-06-02 10:27:45   Strasse         Roermonder Str. 41
     2026-06-02 10:27:45   SuperE10-1      1.83
     2026-06-02 10:27:45   SuperE10-2      9
     2026-06-02 09:59:57   SuperE10_avg    1.83
     2026-06-02 10:27:45   SuperE10_complete 1.839
     2026-06-02 10:27:45   SuperE10_old    1.83
     2026-06-02 10:27:45   SuperE5-1       1.89
     2026-06-02 10:27:45   SuperE5-2       9
     2026-06-02 10:09:57   SuperE5_avg     1.21
     2026-06-02 10:27:45   SuperE5_complete 1.899
     2026-06-02 10:27:45   SuperE5_old     1.89
     2026-06-02 10:27:45   SuperPlus-1     2.01
     2026-06-02 10:27:45   SuperPlus-2     9
     2026-06-02 10:09:57   SuperPlus_avg   1.06
     2026-06-02 10:27:45   SuperPlus_complete 2.019
     2026-06-02 10:27:45   SuperPlus_old   2.01
     2026-06-02 10:09:57   Wasserstoff_avg 0
     2026-06-02 10:09:57   Wasserstoff_complete 0
     2026-06-02 10:27:27   Wasserstoff_old 0
     2026-06-02 10:27:45   last_update     02.06.2026 10:15
     2026-06-02 10:27:45   open_days-1     Samstag
     2026-06-02 10:27:45   open_days-2     Sonntag
     2026-06-02 10:27:45   open_days-3     Mo-Fr
     2026-06-02 10:27:45   open_hours-1    8:00-20:00
     2026-06-02 10:27:45   open_hours-2    9:00-20:00
     2026-06-02 10:27:45   open_hours-3    7:00-20:00
   REQUEST:
     context    reading
     data       
     header     
     ignoreredirects 0
     num        unknown
     retryCount 0
     type       update
     url        https://www.clever-tanken.de/tankstelle_details/15360
   defptr:
     readingBase:
       Diesel-1   reading
       Diesel-2   reading
       LPG-1      reading
       LPG-2      reading
       Name       reading
       Ort        reading
       PLZ        reading
       Strasse    reading
       SuperE10-1 reading
       SuperE10-2 reading
       SuperE5-1  reading
       SuperE5-2  reading
       SuperPlus-1 reading
       SuperPlus-2 reading
       last_update reading
       open_days-1 reading
       open_days-2 reading
       open_days-3 reading
       open_hours-1 reading
       open_hours-2 reading
       open_hours-3 reading
     readingNum:
       Diesel-1   08
       Diesel-2   08
       LPG-1      12
       LPG-2      12
       Name       01
       Ort        04
       PLZ        03
       Strasse    02
       SuperE10-1 09
       SuperE10-2 09
       SuperE5-1  10
       SuperE5-2  10
       SuperPlus-1 11
       SuperPlus-2 11
       last_update 07
       open_days-1 05
       open_days-2 05
       open_days-3 05
       open_hours-1 06
       open_hours-2 06
       open_hours-3 06
     readingOutdated:
     readingSubNum:
       Diesel-1   -1
       Diesel-2   -2
       LPG-1      -1
       LPG-2      -2
       SuperE10-1 -1
       SuperE10-2 -2
       SuperE5-1  -1
       SuperE5-2  -2
       SuperPlus-1 -1
       SuperPlus-2 -2
       open_days-1 -1
       open_days-2 -2
       open_days-3 -3
       open_hours-1 -1
       open_hours-2 -2
       open_hours-3 -3
     requestReadings:
       update:
         Diesel-1   reading 08-1
         Diesel-2   reading 08-2
         LPG-1      reading 12-1
         LPG-2      reading 12-2
         Name       reading 01
         Ort        reading 04
         PLZ        reading 03
         Strasse    reading 02
         SuperE10-1 reading 09-1
         SuperE10-2 reading 09-2
         SuperE5-1  reading 10-1
         SuperE5-2  reading 10-2
         SuperPlus-1 reading 11-1
         SuperPlus-2 reading 11-2
         last_update reading 07
         open_days-1 reading 05-1
         open_days-2 reading 05-2
         open_days-3 reading 05-3
         open_hours-1 reading 06-1
         open_hours-2 reading 06-2
         open_hours-3 reading 06-3
Attributes:
   alias      ARAL in Karken (Roermonder Str.)
   enableControlSet 1
   event-min-interval .*:1800
   event-on-change-reading .*
   group      Informationen
   icon       fuel
   model      clever_tanken_single_station
   reading01Name Name
   reading01Regex <span class="strong-title" itemprop="name">(.*)</span>
   reading02Name Strasse
   reading02Regex <span itemprop="streetAddress">(.*)</span>
   reading03Name PLZ
   reading03Regex <span itemprop="http://schema.org/postalCode">(.*)</span>
   reading04Name Ort
   reading04Regex <span itemprop="http://schema.org/addressCountry">(.*)</span>
   reading05Name open_days
   reading05RegOpt g
   reading05Regex <div class="d-flex justify-content-between weak-body">\s*<span>\s*(.*)<\/span>
   reading06Name open_hours
   reading06RegOpt g
   reading06Regex <div class="d-flex justify-content-between weak-body">\s*<span>\s*.*<\/span>\s*<span>\s*(.*)<\/span>
   reading07Name last_update
   reading07Regex <span>Letzte Aktualisierung: (.*)</span>
   reading08Name Diesel
   reading08OExpr { ($val < 0.25) ? ReadingsNum($name,"Diesel-1",0) : $val }
   reading08Regex <div[^>]*class="price-type-name"[^>]*>Diesel<\/div>[\s\S]*?<span[^>]*id="current-price-\d+"[^>]*>([\d.]+)<\/span>[\s\S]*?<sup[^>]*id="suffix-price-\d+"[^>]*>(\d+)<\/sup>
   reading09Name SuperE10
   reading09OExpr { ($val < 0.25) ? ReadingsNum($name,"SuperE10-1",0) : $val }
   reading09Regex <div[^>]*class="price-type-name"[^>]*>Super E10<\/div>[\s\S]*?<span[^>]*id="current-price-\d+"[^>]*>([\d.]+)<\/span>[\s\S]*?<sup[^>]*id="suffix-price-\d+"[^>]*>(\d+)<\/sup>
   reading10Name SuperE5
   reading10OExpr { ($val < 0.25) ? ReadingsNum($name,"SuperE5-1",0) : $val }
   reading10Regex <div[^>]*class="price-type-name"[^>]*>Super E5<\/div>[\s\S]*?<span[^>]*id="current-price-\d+"[^>]*>([\d.]+)<\/span>[\s\S]*?<sup[^>]*id="suffix-price-\d+"[^>]*>(\d+)<\/sup>
   reading11Name SuperPlus
   reading11OExpr { ($val < 0.25) ? ReadingsNum($name,"SuperPlus-1",0) : $val }
   reading11Regex <div[^>]*class="price-type-name"[^>]*>ARAL Superplus<\/div>[\s\S]*?<span[^>]*id="current-price-\d+"[^>]*>([\d.]+)<\/span>[\s\S]*?<sup[^>]*id="suffix-price-\d+"[^>]*>(\d+)<\/sup>
   reading12Name LPG
   reading12OExpr { ($val < 0.25) ? ReadingsNum($name,"LPG-1",0) : $val }
   reading12Regex <div[^>]*class="price-type-name"[^>]*>LPG<\/div>[\s\S]*?<span[^>]*id="current-price-\d+"[^>]*>([\d.]+)<\/span>[\s\S]*?<sup[^>]*id="suffix-price-\d+"[^>]*>(\d+)<\/sup>
   reading13Name LNG
   reading13OExpr { ($val < 0.25) ? ReadingsNum($name,"LNG-1",0) : $val }
   reading13Regex <div[^>]*class="price-type-name"[^>]*>LNG<\/div>[\s\S]*?<span[^>]*id="current-price-\d+"[^>]*>([\d.]+)<\/span>[\s\S]*?<sup[^>]*id="suffix-price-\d+"[^>]*>(\d+)<\/sup>
   reading14Name CNG
   reading14OExpr { ($val < 0.25) ? ReadingsNum($name,"CNG-1",0) : $val }
   reading14Regex <div[^>]*class="price-type-name"[^>]*>CNG<\/div>[\s\S]*?<span[^>]*id="current-price-\d+"[^>]*>([\d.]+)<\/span>[\s\S]*?<sup[^>]*id="suffix-price-\d+"[^>]*>(\d+)<\/sup>
   reading15Name Bioethanol
   reading15OExpr { ($val < 0.25) ? ReadingsNum($name,"Bioethanol-1",0) : $val }
   reading15Regex <div[^>]*class="price-type-name"[^>]*>Bioethanol<\/div>[\s\S]*?<span[^>]*id="current-price-\d+"[^>]*>([\d.]+)<\/span>[\s\S]*?<sup[^>]*id="suffix-price-\d+"[^>]*>(\d+)<\/sup>
   reading16Name Wasserstoff
   reading16OExpr { ($val < 0.25) ? ReadingsNum($name,"Wasserstoff-1",0) : $val }
   reading16Regex <div[^>]*class="price-type-name"[^>]*>Wasserstoff<\/div>[\s\S]*?<span[^>]*id="current-price-\d+"[^>]*>([\d.]+)<\/span>[\s\S]*?<sup[^>]*id="suffix-price-\d+"[^>]*>(\d+)<\/sup>
   readingMaxAge 15
   readingMaxAgeReplacementMode delete
   readingOExpr $val =~ s/<[\d\D]+>//;;$val
   room       Information->Spritpreise
   stateFormat {
  sprintf("Super E5: %.2f €    *    Super E10: %.2f €    *    Super Plus: %.2f €    *    Diesel: %.2f €",
    ReadingsNum($name,"SuperE5-1",0) + 0.01,
    ReadingsNum($name,"SuperE10-1",0) + 0.01,
    ReadingsNum($name,"SuperPlus-1",0) + 0.01,
    ReadingsNum($name,"Diesel-1",0) + 0.01
  )
}
   timeout    10
   timestamp-on-change-reading .*
   userReadings Diesel_old { OldReadingsNum($name,"Diesel-1", ReadingsNum($name,"Diesel-1",0)) },
SuperE5_old { OldReadingsNum($name,"SuperE5-1", ReadingsNum($name,"SuperE5-1",0)) },
SuperE10_old { OldReadingsNum($name,"SuperE10-1", ReadingsNum($name,"SuperE10-1",0)) },
SuperPlus_old { OldReadingsNum($name,"SuperPlus-1", ReadingsNum($name,"SuperPlus-1",0)) },
LPG_old { OldReadingsNum($name,"LPG-1", ReadingsNum($name,"LPG-1",0)) },
LNG_old { OldReadingsNum($name,"LNG-1", ReadingsNum($name,"LNG-1",0)) },
CNG_old { OldReadingsNum($name,"CNG-1", ReadingsNum($name,"CNG-1",0)) },
Bioethanol_old { OldReadingsNum($name,"Bioethanol-1", ReadingsNum($name,"Bioethanol-1",0)) },
Wasserstoff_old { OldReadingsNum($name,"Wasserstoff-1", ReadingsNum($name,"Wasserstoff-1",0)) },

Diesel_complete { ReadingsNum($name,"Diesel-1", 0) + (ReadingsNum($name,"Diesel-2", 0) / 1000) },
SuperE5_complete { ReadingsNum($name,"SuperE5-1", 0) + (ReadingsNum($name,"SuperE5-2", 0) / 1000) },
SuperE10_complete { ReadingsNum($name,"SuperE10-1", 0) + (ReadingsNum($name,"SuperE10-2", 0) / 1000) },
SuperPlus_complete { ReadingsNum($name,"SuperPlus-1", 0) + (ReadingsNum($name,"SuperPlus-2", 0) / 1000) },
LPG_complete { ReadingsNum($name,"LPG-1", 0) + (ReadingsNum($name,"LPG-2", 0) / 1000) },
LNG_complete { ReadingsNum($name,"LNG-1", 0) + (ReadingsNum($name,"LNG-2", 0) / 1000) },
CNG_complete { ReadingsNum($name,"CNG-1", 0) + (ReadingsNum($name,"CNG-2", 0) / 1000) },
Bioethanol_complete { ReadingsNum($name,"Bioethanol-1", 0) + (ReadingsNum($name,"Bioethanol-2", 0) / 1000) },
Wasserstoff_complete { ReadingsNum($name,"Wasserstoff-1", 0) + (ReadingsNum($name,"Wasserstoff-2", 0) / 1000) },

Diesel_avg { ReadingsNum("Diesel","Durchschnitt",0) },
SuperE5_avg { ReadingsNum("SuperE5","Durchschnitt",0) },
SuperE10_avg { ReadingsNum("SuperE10","Durchschnitt",0) },
SuperPlus_avg { ReadingsNum("SuperPlus","Durchschnitt",0) },
LPG_avg { ReadingsNum("LPG","Durchschnitt",0) },
LNG_avg { ReadingsNum("LNG","Durchschnitt",0) },
CNG_avg { ReadingsNum("CNG","Durchschnitt",0) },
Bioethanol_avg { ReadingsNum("Bioethanol","Durchschnitt",0) },
Wasserstoff_avg { ReadingsNum("Wasserstoff","Durchschnitt",0) },

   userattr   
   verbose    3
#13
Sonstiges / Aw: HTTPMOD liest bei Clever-T...
Letzter Beitrag von Marko1976 - 02 Juni 2026, 10:11:59
Ja werde ich ändern, wobei ich nicht glaube dass dies die Ursache ist. Wenn kommt die 0 ja aus dem Ersatzteil der ReadingVal, die wäre ja bei ReadingNum genauso. Es ist damit nur geklärt woher die 0 kommt, aber nicht warum das Reading im Readingsval gar nicht existiert.
{ ($val < 1) ? ReadingsVal($name,"SuperE5-1",0) : $val }Was es bräuchte wäre also ein alternativer Ersatzwert für die Null. Kann man diesen Ersatzwert auch komplett weglassen? Was würde dann als Ersatz geschrieben?

Die Frage die sich mir stellt, ist warum die Readings mit der Erweiterung -1 und -2 nicht ordnungsgemäß erzeugt werden. Die Regex erzeugt die Readings ja gar nicht, weder mit der erweiterten -1 noch ohne diese.
Das HTTPMOD erzeugt das Reading mit der Erweiterung ja automatisch wenn aus der Regex bei einem Match mehrere Werte ausgelesen werden. Doch er findet ja offenbar weder einen noch mehrere Werte. Gestern und heute mit Regex101.com noch mal gegengetestet sagt mir die Webseite, das die Regex funktioniert.

Also selbst wenn ich auf einen anderen Ersatzwert mit anderem Readingnamen ohne die -1 Erweiterung verweise, existiert der genauso wenig. Aus dem stehgreif heraus würde mir jetzt nur ReadingsOld einfallen und damit sogesehen eine Kopie des eigentlichen Readings anzulegen und darauf zu verweisen wenn das eigentliche Reading nicht vorhanden ist. Doch damit würde ich ja auch die Richtigkeit der Daten kompromittieren, da diese dann nicht mehr mit dem aktuellen Stand übereinstimmen.
#14
Zigbee / Aw: SONOFF SNZB-06P
Letzter Beitrag von SH_Heini - 02 Juni 2026, 10:00:19
Probier mal:

sensitivity:low,medium,high $DEVICETOPIC/set {"occupancy_sensitivity":"$EVTPART1"}
sensor_timeout:15,20,25,30 $DEVICETOPIC/set {"occupancy_timeout":$EVTPART1}

15 Sekunden scheint bei dem Sensor das Minimum zu sein.

Bei Empfangsproblemen hat bei mir geholfen, auf der zigbee2mqtt Oberfläche bei "Beitritt erlauben" (Dropdownmenü) einen Router in der Nähe auszuwählen um das jeweilige Gerät neu anzulernen.
#15
Homematic / Aw: Erweiterung einer HMConfig...
Letzter Beitrag von papa - 02 Juni 2026, 09:58:49
Er hätte eigentlich schon den "if" in Zeile 856 nehmen müssen. Entweder ist das Gerät nicht korrekt gepairt und es fehlt das Model Attribute. Oder die Anmeldung des neuen Gerätes passt noch nicht.

Mach mal die beiden Kommentare in Zeile 854 & 858 wieder rein.
#16
Zigbee / Aw: SONOFF Zigbee 3.0 USB Dong...
Letzter Beitrag von satprofi - 02 Juni 2026, 09:52:55
Gestern erfolgreich presence sensor eingebunden. was mich aber stutzig macht ist die Empfangsstärke des Dongle. kann man die etwas erhöhen? 2 eragen höher erkennt er keine Geräte mehr. oder braucht man mehrere um das ominöse mesh netzwerk aufzuspannen ?
#17
Zigbee / Aw: SONOFF SNZB-06P
Letzter Beitrag von satprofi - 02 Juni 2026, 09:05:11
Danke, zwischenzeitlich schon gesehen. Was in der setlist nicht aktivierbar ist, ist die occupancy_timeout, da tut sich am Gerät nichts.
auch ist der empfang nicht überwältigend, 1 etage höher noch einigermassen, aber 2 etagen, null empfang.
#18
Sonstiges / Aw: HTTPMOD liest bei Clever-T...
Letzter Beitrag von RalfRog - 02 Juni 2026, 09:02:51
Zitat von: Otto123 am 01 Juni 2026, 12:20:01...kein Reading mit dem Namen "Diesel-1". Damit wird ReadingsVal($name,"Diesel-1",0) immer null ergeben...

Ich würde Ottos Hinweis mal eruieren. Immer dann wenn das Reading nicht existiert bzw. bei ReadingsNum nicht numerisch ist wird der Default-Wert hinein geschrieben.
Mithin schreibst du dir eventuell bei Problemen im Abruf der Seite selber die "0" ins Reading.
So als Idee...


https://wiki.fhem.de/wiki/DevelopmentModuleAPI#ReadingsNum

Gruß
#19
Server - Linux / Aw: ubuntu 26.04. Jeelink USB ...
Letzter Beitrag von dyna - 02 Juni 2026, 08:53:26
Moin Wernieman,

der user fhem gehört folgenden Gruppen an
id fhem
uid=999(fhem) gid=20(dialout) groups=20(dialout),5(tty),29(audio),46(plugdev)
#20
FHEM Code changes / Revision 31326: controls_fhem....
Letzter Beitrag von System - 02 Juni 2026, 08:21:04
Revision 31326: controls_fhem.txt: fhemupdate checkin

controls_fhem.txt: fhemupdate checkin

Source: Revision 31326: controls_fhem.txt: fhemupdate checkin