Hilfe bei HTTPMOD (chargefinder.com --> Status Ladesäule)

Begonnen von Loetkolben, 24 Oktober 2025, 18:51:29

Vorheriges Thema - Nächstes Thema

Loetkolben

Hallo zusammen,
kann mir jemand behilflich sein?

Ich möchte auf chargefinder.com den Status einer Ladesäule auslesen, finde aber keinen richtigen Anfang.
Bisher habe ich einfach ein Device erstellt und geschaut was so an Infos kommt, aber das unterscheidet sich extrem von dem was ich in Firefox sehe wenn ich mir den Seitenquelltext mit den Web-Tools ansehe.

defmod SYS_TEST HTTPMOD https://chargefinder.com/de/stromtankstelle-langenfeld-ohligser-strasse-16/zneynr 60
attr SYS_TEST DbLogExclude .*
attr SYS_TEST alias Saeule1
attr SYS_TEST room Labor
attr SYS_TEST verbose 5

Hier sehe ich dann im Log das hier:
2025.10.24 18:32:03 4: SYS_TEST: GetUpdate called (update)
2025.10.24 18:32:03 4: SYS_TEST: UpdateTimer called from GetUpdate with cmd next sets timer to call update function in 60.0 sec at 18:33:03.978, interval 60
2025.10.24 18:32:03 5: SYS_TEST: AddToQueue adds type update to URL https://chargefinder.com/de/stromtankstelle-langenfeld-ohligser-strasse-16/zneynr, no data, no headers, retry 0, initial queue len: 0
2025.10.24 18:32:03 5: SYS_TEST: HandleSendQueue called from AddToSendQueue, qlen = 1
2025.10.24 18:32:03 5: SYS_TEST: no separator for multiple values (Context update, unknown)
2025.10.24 18:32:03 4: SYS_TEST: HandleSendQueue sends update with timeout 2 to https://chargefinder.com/de/stromtankstelle-langenfeld-ohligser-strasse-16/zneynr, No Data, No Header
2025.10.24 18:32:04 5: SYS_TEST: ReadCallback called from __ANON__
2025.10.24 18:32:04 4: SYS_TEST: Read callback: request type was update retry 0,
header: HTTP/1.1 200 OK
Connection: close
Content-Length: 6617
Cache-Control: max-age=0, no-cache, no-store, must-revalidate
Content-Security-Policy: script-src 'self' 'unsafe-eval' 'unsafe-inline' blob: *.googleapis.com *.chargefinder.com *.gstatic.com *.googletagservices.com *.googletagmanager.com *.google.com *.googlesyndication.com *.adtrafficquality.google *.ampproject.org *.doubleclick.net *.inmobi.com *.smaato.net *.casalemedia.com *.krushmedia.com *.fksnk.com *.shb-sync.com *.adnxs.com *.openxcdn.net
Content-Type: text/html; charset=utf-8
Cross-Origin-Opener-Policy: same-origin-allow-popups
Function-Execution-Id: ut2gfuoea0u9
Server: Google Frontend
Strict-Transport-Security: max-age=31556926
X-Cloud-Trace-Context: 0f570117bca80c8cb0ae0f3153533028
X-Content-Type-Options: nosniff
X-Country-Code: DE
X-Xss-Protection: 1; mode=block
Accept-Ranges: bytes
Date: Fri, 24 Oct 2025 16:32:04 GMT
X-Served-By: cache-fra-eddf8230084-FRA
X-Cache: MISS
X-Cache-Hits: 0
X-Timer: S1761323524.185710,VS0,VE158
Vary: cookie,need-authorization, x-fh-requested-host, accept-encoding
alt-svc: h3=":443";ma=86400,h3-29=":443";ma=86400,h3-27=":443";ma=86400, body length 6617
2025.10.24 18:32:04 5: SYS_TEST: Read callback: body
<!doctype html><html lang="de"><head><meta charset="utf-8"><meta http-equiv="Content-Security-Policy" content="default-src * 'self' 'unsafe-inline' data: gap: content: blob:;connect-src https://*.chargefinder.com https://chargefinder.com https://*.appspot.com https://*.amazonaws.com https://*.sentry.io https://*.doubleclick.net *.inmobi.com *.smaato.net *.casalemedia.com *.krushmedia.com *.fksnk.com *.shb-sync.com https://fundingchoicesmessages.google.com https://*.gstatic.com https://*.adtrafficquality.google https://api.glympse.com https://*.cloud.google.com https://apis.google.com https://*.googlesyndication.com https://*.googleapis.com https://*.ampproject.org http://localhost:8080 http://localhost:8090 ws://localhost:8080 ws://localhost:8090 wss://*.chargefinder.com app://localhost https://*.ngrok-free.app wss://*.ngrok-free.app file:; script-src 'self' 'unsafe-eval' 'unsafe-inline' blob: *.googleapis.com *.chargefinder.com *.gstatic.com *.googletagservices.com *.googletagmanager.com *.google.com *.doubleclick.net *.adnxs.com *.adtrafficquality.google *.googlesyndication.com *.ampproject.org *.openxcdn.net"><meta name="viewport" content="width=device-width,initial-scale=1"><meta name="robots" content="index,follow"><meta name="theme-color" content="#FF6533"><meta name="format-detection" content="telephone=no"><meta name="msapplication-tap-highlight" content="no"><meta name="google-site-verification" content="YCdN4VOt-D1lbXg7KWMBDKjDzfTQCkgQi1DW_cD2d1g"><title>ChargeFinder - Ladestationen für Elektroautos.</title><meta name="description" content="Finden Sie Ladestationen mit einer Suche oder auf Karte. Sehen Sie Verfügbarkeit, Preise und mehr in Echtzeit für Tausende von Ladegeräten für Elektroautos."><meta property="og:type" content="website" /><meta property="og:title" content="ChargeFinder - Ladestationen für Elektroautos." /><meta property="og:description" content="Finden Sie Ladestationen mit einer Suche oder auf Karte. Sehen Sie Verfügbarkeit, Preise und mehr in Echtzeit für Tausende von Ladegeräten für Elektroautos." /><meta property="og:image" content="https://chargefinder.com/static/images/share-de.png" /><meta property="og:url" content="https://chargefinder.com/de/stromtankstelle-langenfeld-ohligser-strasse-16/zneynr" /><link rel="canonical" href="https://chargefinder.com/de/stromtankstelle-langenfeld-ohligser-strasse-16/zneynr"><link rel="alternate" href="https://chargefinder.com/en/charging-station-langenfeld-ohligser-strasse-16/zneynr" type="text/html" hreflang="en"><link rel="alternate" href="https://chargefinder.com/se/ladda-elbil-langenfeld-ohligser-strasse-16/zneynr" type="text/html" hreflang="sv"><link rel="alternate" href="https://chargefinder.com/no/ladestasjoner-elbil-langenfeld-ohligser-strasse-16/zneynr" type="text/html" hreflang="no"><link rel="alternate" href="https://chargefinder.com/dk/ladestation-elbil-langenfeld-ohligser-strasse-16/zneynr" type="text/html" hreflang="da"><link rel="alternate" href="https://chargefinder.com/fi/sahkoauton-lataus-langenfeld-ohligser-strasse-16/zneynr" type="text/html" hreflang="fi"><link rel="alternate" href="https://chargefinder.com/nl/laadpaal-langenfeld-ohligser-strasse-16/zneynr" type="text/html" hreflang="nl"><link rel="alternate" href="https://chargefinder.com/is/hledsla-rafbila-langenfeld-ohligser-strasse-16/zneynr" type="text/html" hreflang="is"><link rel="alternate" href="https://chargefinder.com/de/stromtankstelle-langenfeld-ohligser-strasse-16/zneynr" type="text/html" hreflang="de"><link rel="alternate" href="https://chargefinder.com/fr/borne-recharge-langenfeld-ohligser-strasse-16/zneynr" type="text/html" hreflang="fr"><link rel="alternate" href="https://chargefinder.com/es/carga-estacion-langenfeld-ohligser-strasse-16/zneynr" type="text/html" hreflang="es"><link rel="alternate" href="https://chargefinder.com/it/carica-stazione-langenfeld-ohligser-strasse-16/zneynr" type="text/html" hreflang="it"><link rel="alternate" href="https://chargefinder.com/pl/ladowanie-stacji-langenfeld-ohligser-strasse-16/zneynr" type="text/html" hreflang="pl"><link rel="alternate" href="https://chargefinder.com/us/charging-station-langenfeld-ohligser-strasse-16/zneynr" type="text/html" hreflang="en-us"><base href="/"><link rel="icon" href="/favicon.ico" sizes="48x48"><link rel="icon" href="/favicon.svg" type="image/svg+xml"><link rel="apple-touch-icon" href="https://static.chargefinder.com/icons/apple-touch-icon.png"><link rel="icon" href="https://static.chargefinder.com/icons/favicon.png"><script async src="https://securepubads.g.doubleclick.net/tag/js/gpt.js" crossorigin="anonymous"></script><script src="static/js/gam.js?v10" defer="defer"></script><script async defer="defer" src="static/js/prebid.js?v2"></script><link rel="icon" href="/favicon.ico"><script defer="defer" src="/js/runtime.js?493193fa1a0edf96533c"></script><script defer="defer" src="/js/bundle.js?493193fa1a0edf96533c"></script><script defer="defer" src="/js/map.js?493193fa1a0edf96533c"></script><script defer="defer" src="/js/vendors.js?493193fa1a0edf96533c"></script><script defer="defer" src="/js/app.js?493193fa1a0edf96533c"></script><link href="/css/map.css?493193fa1a0edf96533c" rel="stylesheet"><link href="/css/app.css?493193fa1a0edf96533c" rel="stylesheet"></head><body><img width="99999" height="99999" style="pointer-events: none;
        position: absolute;
        top: 0;
        left: 0;
        width: 99vw;
        height: 99vh;
        max-width: 99vw;
        max-height: 99vh;" src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHdpZHRoPSI5OTk5OXB4IiBoZWlnaHQ9Ijk5OTk5cHgiIHZpZXdCb3g9IjAgMCA5OTk5OSA5OTk5OSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj48ZyBzdHJva2U9Im5vbmUiIGZpbGw9Im5vbmUiIGZpbGwtb3BhY2l0eT0iMCI+PHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9Ijk5OTk5IiBoZWlnaHQ9Ijk5OTk5Ij48L3JlY3Q+IDwvZz4gPC9zdmc+" alt="ChargeFinder"><div id="app"></div><script async crossorigin src="https://www.googletagmanager.com/gtag/js?id=G-GSMY5S0LX2"></script><script nonce="cf1scr">window.dataLayer = window.dataLayer || []
      function gtag() {
        dataLayer.push(arguments)
      }
      gtag('consent', 'default', {
        analytics_storage: 'denied',
        ad_storage: 'denied',
        ad_personalization: 'denied',
        ad_user_data: 'denied',
      })
      gtag('js', new Date())
      gtag('config', 'G-GSMY5S0LX2', {
        transport_url: 'https://gtm.chargefinder.com',
        app_name: 'Web',
        app_version: '3.0.2',
      })</script></body></html>
2025.10.24 18:32:04 4: SYS_TEST: BodyDecode is not decoding the response body (charset utf-8, bodyDecode defaults to none)
2025.10.24 18:32:04 5: SYS_TEST: GetCookies is looking for Cookies
2025.10.24 18:32:04 5: SYS_TEST: ExtractSid called, context reading, num unknown
2025.10.24 18:32:04 4: SYS_TEST: checking for redirects, code=200, ignore=0
2025.10.24 18:32:04 4: SYS_TEST: no redirects to handle
2025.10.24 18:32:04 5: SYS_TEST: Read callback sets LAST_REQUEST to update
2025.10.24 18:32:04 5: SYS_TEST: CheckAuth decided no authentication required
2025.10.24 18:32:04 5: SYS_TEST: Read starts parsing response to update with defined readings:
2025.10.24 18:32:04 4: SYS_TEST: Read response to update didn't match any Reading
2025.10.24 18:32:04 5: SYS_TEST: HandleSendQueue called from ReadCallback, qlen = 0
2025.10.24 18:32:04 5: SYS_TEST: HandleSendQueue found no usable entry in queue
2025.10.24 18:32:05 5: SYS_TEST: set called with reread
2025.10.24 18:32:05 4: SYS_TEST: GetUpdate called (reread)
2025.10.24 18:32:05 5: SYS_TEST: AddToQueue adds type update to URL https://chargefinder.com/de/stromtankstelle-langenfeld-ohligser-strasse-16/zneynr, no data, no headers, retry 0, initial queue len: 0
2025.10.24 18:32:05 5: SYS_TEST: HandleSendQueue called from AddToSendQueue, qlen = 1
2025.10.24 18:32:05 5: SYS_TEST: no separator for multiple values (Context update, unknown)
2025.10.24 18:32:05 4: SYS_TEST: HandleSendQueue sends update with timeout 2 to https://chargefinder.com/de/stromtankstelle-langenfeld-ohligser-strasse-16/zneynr, No Data, No Header
2025.10.24 18:32:06 5: SYS_TEST: ReadCallback called from __ANON__
2025.10.24 18:32:06 4: SYS_TEST: Read callback: request type was update retry 0,
header: HTTP/1.1 200 OK
Connection: close
Content-Length: 6617
Cache-Control: max-age=0, no-cache, no-store, must-revalidate
Content-Security-Policy: script-src 'self' 'unsafe-eval' 'unsafe-inline' blob: *.googleapis.com *.chargefinder.com *.gstatic.com *.googletagservices.com *.googletagmanager.com *.google.com *.googlesyndication.com *.adtrafficquality.google *.ampproject.org *.doubleclick.net *.inmobi.com *.smaato.net *.casalemedia.com *.krushmedia.com *.fksnk.com *.shb-sync.com *.adnxs.com *.openxcdn.net
Content-Type: text/html; charset=utf-8
Cross-Origin-Opener-Policy: same-origin-allow-popups
Function-Execution-Id: ut2g7z0ztvtj
Server: Google Frontend
Strict-Transport-Security: max-age=31556926
X-Cloud-Trace-Context: ad2071c64b3a81806626030de3f19194
X-Content-Type-Options: nosniff
X-Country-Code: DE
X-Xss-Protection: 1; mode=block
Accept-Ranges: bytes
Date: Fri, 24 Oct 2025 16:32:06 GMT
X-Served-By: cache-fra-eddf8230129-FRA
X-Cache: MISS
X-Cache-Hits: 0
X-Timer: S1761323526.432370,VS0,VE176
Vary: cookie,need-authorization, x-fh-requested-host, accept-encoding
alt-svc: h3=":443";ma=86400,h3-29=":443";ma=86400,h3-27=":443";ma=86400, body length 6617
2025.10.24 18:32:06 5: SYS_TEST: Read callback: body
<!doctype html><html lang="de"><head><meta charset="utf-8"><meta http-equiv="Content-Security-Policy" content="default-src * 'self' 'unsafe-inline' data: gap: content: blob:;connect-src https://*.chargefinder.com https://chargefinder.com https://*.appspot.com https://*.amazonaws.com https://*.sentry.io https://*.doubleclick.net *.inmobi.com *.smaato.net *.casalemedia.com *.krushmedia.com *.fksnk.com *.shb-sync.com https://fundingchoicesmessages.google.com https://*.gstatic.com https://*.adtrafficquality.google https://api.glympse.com https://*.cloud.google.com https://apis.google.com https://*.googlesyndication.com https://*.googleapis.com https://*.ampproject.org http://localhost:8080 http://localhost:8090 ws://localhost:8080 ws://localhost:8090 wss://*.chargefinder.com app://localhost https://*.ngrok-free.app wss://*.ngrok-free.app file:; script-src 'self' 'unsafe-eval' 'unsafe-inline' blob: *.googleapis.com *.chargefinder.com *.gstatic.com *.googletagservices.com *.googletagmanager.com *.google.com *.doubleclick.net *.adnxs.com *.adtrafficquality.google *.googlesyndication.com *.ampproject.org *.openxcdn.net"><meta name="viewport" content="width=device-width,initial-scale=1"><meta name="robots" content="index,follow"><meta name="theme-color" content="#FF6533"><meta name="format-detection" content="telephone=no"><meta name="msapplication-tap-highlight" content="no"><meta name="google-site-verification" content="YCdN4VOt-D1lbXg7KWMBDKjDzfTQCkgQi1DW_cD2d1g"><title>ChargeFinder - Ladestationen für Elektroautos.</title><meta name="description" content="Finden Sie Ladestationen mit einer Suche oder auf Karte. Sehen Sie Verfügbarkeit, Preise und mehr in Echtzeit für Tausende von Ladegeräten für Elektroautos."><meta property="og:type" content="website" /><meta property="og:title" content="ChargeFinder - Ladestationen für Elektroautos." /><meta property="og:description" content="Finden Sie Ladestationen mit einer Suche oder auf Karte. Sehen Sie Verfügbarkeit, Preise und mehr in Echtzeit für Tausende von Ladegeräten für Elektroautos." /><meta property="og:image" content="https://chargefinder.com/static/images/share-de.png" /><meta property="og:url" content="https://chargefinder.com/de/stromtankstelle-langenfeld-ohligser-strasse-16/zneynr" /><link rel="canonical" href="https://chargefinder.com/de/stromtankstelle-langenfeld-ohligser-strasse-16/zneynr"><link rel="alternate" href="https://chargefinder.com/en/charging-station-langenfeld-ohligser-strasse-16/zneynr" type="text/html" hreflang="en"><link rel="alternate" href="https://chargefinder.com/se/ladda-elbil-langenfeld-ohligser-strasse-16/zneynr" type="text/html" hreflang="sv"><link rel="alternate" href="https://chargefinder.com/no/ladestasjoner-elbil-langenfeld-ohligser-strasse-16/zneynr" type="text/html" hreflang="no"><link rel="alternate" href="https://chargefinder.com/dk/ladestation-elbil-langenfeld-ohligser-strasse-16/zneynr" type="text/html" hreflang="da"><link rel="alternate" href="https://chargefinder.com/fi/sahkoauton-lataus-langenfeld-ohligser-strasse-16/zneynr" type="text/html" hreflang="fi"><link rel="alternate" href="https://chargefinder.com/nl/laadpaal-langenfeld-ohligser-strasse-16/zneynr" type="text/html" hreflang="nl"><link rel="alternate" href="https://chargefinder.com/is/hledsla-rafbila-langenfeld-ohligser-strasse-16/zneynr" type="text/html" hreflang="is"><link rel="alternate" href="https://chargefinder.com/de/stromtankstelle-langenfeld-ohligser-strasse-16/zneynr" type="text/html" hreflang="de"><link rel="alternate" href="https://chargefinder.com/fr/borne-recharge-langenfeld-ohligser-strasse-16/zneynr" type="text/html" hreflang="fr"><link rel="alternate" href="https://chargefinder.com/es/carga-estacion-langenfeld-ohligser-strasse-16/zneynr" type="text/html" hreflang="es"><link rel="alternate" href="https://chargefinder.com/it/carica-stazione-langenfeld-ohligser-strasse-16/zneynr" type="text/html" hreflang="it"><link rel="alternate" href="https://chargefinder.com/pl/ladowanie-stacji-langenfeld-ohligser-strasse-16/zneynr" type="text/html" hreflang="pl"><link rel="alternate" href="https://chargefinder.com/us/charging-station-langenfeld-ohligser-strasse-16/zneynr" type="text/html" hreflang="en-us"><base href="/"><link rel="icon" href="/favicon.ico" sizes="48x48"><link rel="icon" href="/favicon.svg" type="image/svg+xml"><link rel="apple-touch-icon" href="https://static.chargefinder.com/icons/apple-touch-icon.png"><link rel="icon" href="https://static.chargefinder.com/icons/favicon.png"><script async src="https://securepubads.g.doubleclick.net/tag/js/gpt.js" crossorigin="anonymous"></script><script src="static/js/gam.js?v10" defer="defer"></script><script async defer="defer" src="static/js/prebid.js?v2"></script><link rel="icon" href="/favicon.ico"><script defer="defer" src="/js/runtime.js?493193fa1a0edf96533c"></script><script defer="defer" src="/js/bundle.js?493193fa1a0edf96533c"></script><script defer="defer" src="/js/map.js?493193fa1a0edf96533c"></script><script defer="defer" src="/js/vendors.js?493193fa1a0edf96533c"></script><script defer="defer" src="/js/app.js?493193fa1a0edf96533c"></script><link href="/css/map.css?493193fa1a0edf96533c" rel="stylesheet"><link href="/css/app.css?493193fa1a0edf96533c" rel="stylesheet"></head><body><img width="99999" height="99999" style="pointer-events: none;
        position: absolute;
        top: 0;
        left: 0;
        width: 99vw;
        height: 99vh;
        max-width: 99vw;
        max-height: 99vh;" src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48c3ZnIHdpZHRoPSI5OTk5OXB4IiBoZWlnaHQ9Ijk5OTk5cHgiIHZpZXdCb3g9IjAgMCA5OTk5OSA5OTk5OSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj48ZyBzdHJva2U9Im5vbmUiIGZpbGw9Im5vbmUiIGZpbGwtb3BhY2l0eT0iMCI+PHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9Ijk5OTk5IiBoZWlnaHQ9Ijk5OTk5Ij48L3JlY3Q+IDwvZz4gPC9zdmc+" alt="ChargeFinder"><div id="app"></div><script async crossorigin src="https://www.googletagmanager.com/gtag/js?id=G-GSMY5S0LX2"></script><script nonce="cf1scr">window.dataLayer = window.dataLayer || []
      function gtag() {
        dataLayer.push(arguments)
      }
      gtag('consent', 'default', {
        analytics_storage: 'denied',
        ad_storage: 'denied',
        ad_personalization: 'denied',
        ad_user_data: 'denied',
      })
      gtag('js', new Date())
      gtag('config', 'G-GSMY5S0LX2', {
        transport_url: 'https://gtm.chargefinder.com',
        app_name: 'Web',
        app_version: '3.0.2',
      })</script></body></html>
2025.10.24 18:32:06 4: SYS_TEST: BodyDecode is not decoding the response body (charset utf-8, bodyDecode defaults to none)
2025.10.24 18:32:06 5: SYS_TEST: GetCookies is looking for Cookies
2025.10.24 18:32:06 5: SYS_TEST: ExtractSid called, context reading, num unknown
2025.10.24 18:32:06 4: SYS_TEST: checking for redirects, code=200, ignore=0
2025.10.24 18:32:06 4: SYS_TEST: no redirects to handle
2025.10.24 18:32:06 5: SYS_TEST: Read callback sets LAST_REQUEST to update
2025.10.24 18:32:06 5: SYS_TEST: CheckAuth decided no authentication required
2025.10.24 18:32:06 5: SYS_TEST: Read starts parsing response to update with defined readings:
2025.10.24 18:32:06 4: SYS_TEST: Read response to update didn't match any Reading
2025.10.24 18:32:06 5: SYS_TEST: HandleSendQueue called from ReadCallback, qlen = 0
2025.10.24 18:32:06 5: SYS_TEST: HandleSendQueue found no usable entry in queue

Die Seite im Firefox mit den Webtools betrachtet liefert viel mehr, auch die Stelle die ich finden möchte, siehe Screenshot.

Was muss ich den jetzt im Device machen, damit ich das 'Verfügbar' oder 'Belegt' auslesen kann.

attr SYS_TEST reading01Name Sauele1
attr SYS_TEST reading01Regex xxxxxxxxxxxxxxxxx

Prima wären auch die Infos 'Verfügbar seit:' und 'Belegt seit:'

Ich blicke da nicht durch, auch das lesen im Wiki zum Thema HTTPMOD hat mich in keinster Weise weiter gebracht.

Alternativ: Hat so etwas in der Art schon jemand gemacht?


Gruß
Andreas
1x Pi3, 1x Pi4, CUL V3, miniCUL433+868, IKEA-Steckdosen, Sonoff, Shelly, Conbee II, div. Zigbee-Leuchten, Alexa, Homematic, Tablet UI

satprofi

Hallo. auf dieser seite findest du nichts, wegen dem overlay.
versuche mal https://chargemap.com/en-gb/de-wlb-langenfeld-16-ohligser-strasse.html
setze attr showbody 1 , und such dir im text die passende regex, availaible, id der Säule
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

Loetkolben

#2
Hallo,

die Info mit der Seite war schon mal gut, da kommt jeden Menge an Daten/Text.

Ich blicke aber nicht durch wie ich die Daten da raus bekommen, regex ist absolut nicht mein Thema, ich begreife es nicht.

Auf https://www.scrapingdog.com/blog/parse-html-regex/ habe ich eine - für mich leicht verständliche - Anleitung gefunden wie man mit Regex Daten aus einer HTML-Seite fischt. Das liest sich da auch alles ganz logisch, also habe ich das Beispiel mit dem 'Buchtitel' genommen und an die Seite angepasst.
<hr><a.*?>(.*?)<\/a><\/h3>
<div class="item" data-default-evse="796755"><div class="label label-availability label-availability__available">(.*?)<\/div><\/div>In meinem Reading kommt aber nix an.

Kommt das vielleicht dadurch, im Beispiel liegen <hr> und <a....> direkt hintereinander, auf der Seite die ich abfrage liegt zwischen den Bereichen mit der ID und dem Text ja noch jeden Menge anderes?
1x Pi3, 1x Pi4, CUL V3, miniCUL433+868, IKEA-Steckdosen, Sonoff, Shelly, Conbee II, div. Zigbee-Leuchten, Alexa, Homematic, Tablet UI

Prof. Dr. Peter Henning

1. Bei Experimenten mit HTTPMOD immer die Attribute showBody, showError und showMatched setzen.
2. Wie man dann sieht, sind in dem interessanten Bereich
<div class="item" data-default-evse="796755">
   
   
    <div class="item-content">
        <div class="item-icons">
            <span class="item-category">
                <img src="https://api.chargemap.com/medias/v2/connector_types/icon/original/14/type2.png"
                    alt="Type 2"/>
            </span>
        </div>
        <div>
            <h3 class="item-title">
                <div>TYPE 2</div>
                <div class="label label-availability label-availability__available">
                    Available                                                </div>
            </h3>
            <div class="item-text">
                <span>22kW</span>
                &nbsp;/&nbsp;
                <span>AC - three phases</span>
            </div>
        </div>
    </div>
   
</div>
diverse non-printable characters (Zeilenvorschub) enthalten, die Suche mit (.*) liefert also kein Ergebnis.

Bevor man sich die Mühe macht, die alle mit Regex herauszufiltern, sollte man lieber auf XPath umsteigen, also die Hierarchie des Dokumentes ausnutzen. Im vorliegenden Fall liefert
Zitatdefmod SYS_TEST HTTPMOD https://chargemap.com/en-gb/de-wlb-langenfeld-16-ohligser-strasse.html 60
attr SYS_TEST reading01Name Saeule
attr SYS_TEST reading01XPath //div[@data-default-evse="796755"]/div/div[2]/h3/div[2]/text()
attr SYS_TEST showBody 0
attr SYS_TEST showError 1
attr SYS_TEST showMatched 1
den Erfolg, denn der gewünschte Text liegt unterhalb des div-Tags mit dem Attribut data-default-evse="796755" unter weiteren Tags div->2.div->h3->2.div->Textknoten

LG

pah

Loetkolben

Super, vielen Dank. 8)
Da wäre ich nie drauf gekommen.
Die zweite Säule an dem Standpunkt lese ich jetzt auch noch aus, Anzeige erfolgt dann auf TabletUI.
1x Pi3, 1x Pi4, CUL V3, miniCUL433+868, IKEA-Steckdosen, Sonoff, Shelly, Conbee II, div. Zigbee-Leuchten, Alexa, Homematic, Tablet UI

satprofi

#5
@Prof.Dr. Peter Henning
wo gibts den Infos zu denganzen Befehlen bei XPath ? Ist ja gewaltiges Tool.Mit Regex101 wäre ich da nie hingekommen.
Danke für die Lösung
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

Prof. Dr. Peter Henning

#6
Zunächst einmal heißt es XPath, nicht XPart. Und ist schon ziemlich alt, aber dafür auch gut dokumentiert. Zusammen mit XSLT ist das ein echt mächtiges Werkzeug, das viel zu Unrecht nicht mehr häufig genutzt wird.

Ich hänge mal, als kürzest möglichen Einstieg, sechs Seiten an aus "Henning, P: Taschenbuch Multimedia (4. Auflage), (Hanser 2007)"

Wer es länger mag: https://wiki.selfhtml.org/wiki/XML/XSL/XPath

LG

pah

Prof. Dr. Peter Henning

#7
Zitat von: satprofi am 27 Oktober 2025, 11:35:41und es da mit //div[@produktinfo_bxp wk_buy]// ? ? ? /wert()umzusetzen um den Preis zu filtern
Code Auswählen Erweitern
<div class="produktinfo_bxp wk_buy">
    <form name="bstl_1_buy" action="/de/gold/wiener-philharmoniker-1-unze-gold/" method="post" style="margin:0px;"><input type="hidden" name="artnr" value="1" />
    <span class="preis">
       3.603,60 €   </span>
1. Es muss in der Bedingung [@attribut="wert"] heißen, also div[@class="produktinfo_bxp wk_buy"]
2. Das erste Kind ist <form..>
3. Das zweite Kind von form ist <span>, man kann es noch genauer eingrenzen als span[@class="preis"]. 
4. Nachdem man den Knoten adressiert hat, interessiert der Textwert.

Insgesamt //div[@class="produktinfo_bxp wk_buy"]/form/span[@class="preis"]/text()

Ganz einfach zu verstehen, wenn man sich jeden XML- oder HTML-Knoten als Verzeichnis in einem Verzeichnisbaum vorstellt.

LG

pah

satprofi

#8
puh, starker tobak.
Danke.
Frage zu den eckigen Klammern oben, was bezwecken die ? /div[2] z.b.
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

Prof. Dr. Peter Henning

Array-Index, wenn mehrere gleiche Kinder vorhanden sind.

Ich gestehe, dass ich das Zeug 20 Jahre lang gelehrt habe...

LG

pah

Prof. Dr. Peter Henning

#10
Die Zwangsbedingung in [] ist nur nötig, um das von anderen Elementen gleichen Namens zu unterscheiden. Da ich die Seite nicht kenne, weiß ich nicht, welches der Attribute die Produkte voneinander unterscheidet. Ist das nur die Artikelnummer? Das geht auch, da man dann einfach die Form suchen muss, deren "input hidden"-Feld die betreffende Nummer hat., Und wenn man diese Form hat, deren Kind span mit der Klasse preis

LG

pah

Loetkolben

#11
Ich muss da nochmal was nachfragen zur o.g. Lösung zur Abfrage der Ladesäulen.
Das erzeugte Reading wird bei mir 'AldiSaeule1' genant und da wird dann der Status der Ladesäule angezeigt.
Der ist entweder Available, Busy, Out of Order oder Unknown - so wie aus der Webseite ausgelesen.

In TabletUi möchte ich jetzt in Anhängigkeit des Readings ein Icon färben und einen Text ausgeben.
Text ausgeben geht, hier wird mittels data-substitution aus "Available" ein "Verfügbar" gemacht.
Aber das Icon wechselt seine Farbe nicht.

Zum Test habe ich mir ein Dummy gemacht, bei dem ich per 'setreading test2 aldisaeule1 Busy' den Status setze (im Grunde das gleiche wie das eigentliche HTTPMOD-Device, nur händisch).
Hier funktioniert der Wechsel vom Text und der Farbe.

Kann es sein, das in dem Reading das durch reading01XPath erzeugt wird noch irgendwelche Schmierzeichen hängen, die von TabletUI nicht ausgewertet können?  Warum klappt das data-substitution, aber der Farbwechsel nicht.
Wenn man den Quelltext markiert, sieht das komisch aus - siehe Screenshot

@pah Du hast oben was von 'non-printable characters (Zeilenvorschub)' geschrieben.


Internals:
   .Content-Type  text/html; charset=utf-8
   .LASTSEND  1761657728.08142
   .LastUpdate 1761657728.07904
   .TRIGGERTIME 1761658328.07904
   .XPathEnabled 1
   .bodyCharset utf-8
   .getList   
   .setList   interval reread:noArg stop:noArg start:noArg clearCookies:noArg upgradeAttributes:noArg storeKeyValue
   .updateRequestHash 1
   BUSY       0
   CFGFN     
   DEF        https://chargemap.com/en-gb/de-wlb-langenfeld-16-ohligser-strasse.html 600
   FUUID      6900c123-f33f-b9f5-5b98-2ad50618e8521fc2
   Interval   600
   MainURL    https://chargemap.com/en-gb/de-wlb-langenfeld-16-ohligser-strasse.html
   ModuleVersion 4.2.0 - 11.8.2023
   NAME       SYS_ChSt_AldiSued
   NOTIFYDEV  global
   NR         503752
   NTFY_ORDER 50-SYS_ChSt_AldiSued
   STATE      ???
   TYPE       HTTPMOD
   eventCount 4
   value     
   .attraggr:
   .attrminint:
   .readingParseList:
     01
     02
   HTTPCookieHash:
     predis;:
       Name       predis
       Options    Path=/; Domain=chargemap.com; Max-Age=7200; Expires=Tue, 28 Oct 2025 15:22:11 GMT
       Path       
       Value      e6159b4cc7943e49826f423dc0deee273854271f~session-65fcb2809358c177192cbb83e79da115
   HttpUtils:
     NAME       
     addr       https://chargemap.com:443
     auth       0
     code       200
     compress   1
     conn       
     data       
     displayurl https://chargemap.com/en-gb/de-wlb-langenfeld-16-ohligser-strasse.html
     header     Cookie: predis=e6159b4cc7943e49826f423dc0deee273854271f~session-65fcb2809358c177192cbb83e79da115
     host       chargemap.com
     httpheader HTTP/1.1 200 OK
Date: Tue, 28 Oct 2025 13:22:11 GMT
Content-Type: text/html; charset=utf-8
Connection: close
CF-Ray: 995abd94693b37f7-FRA
CF-Cache-Status: DYNAMIC
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
x-powered-by: PHP/8.1.33
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=uboAeby7S5cGbHrwjCZ9N7GJosa%2FVwEVnMeDAyssBSNsyIhnxMAII4UGknXk84c4rVU66fpiVLPzxrTJyCEltQZIVbxSTA41am9Jsw%3D%3D"}]}
Content-Encoding: gzip
Set-Cookie: predis=e6159b4cc7943e49826f423dc0deee273854271f~session-65fcb2809358c177192cbb83e79da115; Path=/; Domain=chargemap.com; Max-Age=7200; Expires=Tue, 28 Oct 2025 15:22:11 GMT
     httpversion 1.0
     hu_blocking 0
     hu_filecount 1
     hu_port    443
     hu_portSfx
     ignoreredirects 1
     loglevel   4
     path       /en-gb/de-wlb-langenfeld-16-ohligser-strasse.html
     protocol   https
     redirects  0
     timeout    10
     url        https://chargemap.com/en-gb/de-wlb-langenfeld-16-ohligser-strasse.html
     sslargs:
   QUEUE:
   READINGS:
     2025-10-28 14:22:13   AldiSaeule1      Available
     2025-10-28 14:22:13   AldiSaeule2      Busy
     2025-10-28 14:22:13   LAST_REQUEST    update
     2025-10-28 14:22:13   MATCHED_READINGS AldiSaeule1 AldiSaeule2
     2025-10-28 14:22:13   UNMATCHED_READINGS
   REQUEST:
     context    reading
     data       
     header     
     ignoreredirects 0
     num        unknown
     retryCount 0
     type       update
     url        https://chargemap.com/en-gb/de-wlb-langenfeld-16-ohligser-strasse.html
   defptr:
     readingBase:
       AldiSaeule1 reading
       AldiSaeule2 reading
     readingNum:
       AldiSaeule1 01
       AldiSaeule2 02
     readingOutdated:
     requestReadings:
       update:
         AldiSaeule1 reading 01
         AldiSaeule2 reading 02
   hmccu:
Attributes:
   DbLogExclude .*
   alias      Ladesäulen Aldi
   reading01Name AldiSaeule1
   reading01XPath //div[@data-default-evse="796755"]/div/div[2]/h3/div[2]/text()
   reading02Name AldiSaeule2
   reading02XPath //div[@data-default-evse="796756"]/div/div[2]/h3/div[2]/text()
   room       Fahrzeuge
   showBody   0
   showError  1
   showMatched 1
   timeout    10
   verbose    0


                <div class="inline">
                        <div class="medium inline">Aldi Sued Säule 1: </div>
                        <div data-type="symbol"
                             data-device="SYS_ChSt_AldiSued"
                             data-get="AldiSaeule1"
                             data-states='["Busy","Available"]'
                             data-icons='["fa-charging-station blink","fa-charging-station big"]'
                             data-colors='["red","green"]'>
                        </div>
                        <div data-type="label"
                             data-device="SYS_ChSt_AldiSued"
                             data-get="AldiSaeule1"
                             data-states='["Busy","Available"]'
                             data-substitution='["Busy","Belegt","Available","Verf&uuml;gbar"]'>
                        </div>
                </div>
                <div class="inline">
                        <div class="medium inline">Aldi Sued Säule 2: </div>
                        <div data-type="symbol"
                             data-device="test2"
                             data-get="aldisaeule1"
                             data-states='["Busy","Available"]'
                             data-icons='["fa-charging-station blink","fa-charging-station big"]'
                             data-colors='["red","green"]'>
                        </div>
                        <div data-type="label"
                             data-device="test2"
                             data-get="aldisaeule1"
                             data-states='["Busy","Available"]'
                             data-substitution='["Busy","Belegt","Available","Verf&uuml;gbar"]'>
                        </div>
                </div>
1x Pi3, 1x Pi4, CUL V3, miniCUL433+868, IKEA-Steckdosen, Sonoff, Shelly, Conbee II, div. Zigbee-Leuchten, Alexa, Homematic, Tablet UI

satprofi

also Farben setze ich so [color]="SHRDZM_84F3EB1C394B:sensor_1.7.0_momentan_import | step('0:white, 1:red')"
gruss
-----------------------------------------------------------------------
beelink miniPC - Fhem 6.x CUL 868, FS20, NetIO230 CUL 433
HMLAN, HM-CC-RT-DN,Homematic Actoren,LD382A,Telegram

TomLee


Loetkolben

Habs gefunden :-)
Es waren tatsächlich 'leerzeichen' jeweils vor und nach dem Wort, also so wie man es auch im markierten Quelltext sieht.

@TomLee: Danke für den Hinweis, teste ich mal.
1x Pi3, 1x Pi4, CUL V3, miniCUL433+868, IKEA-Steckdosen, Sonoff, Shelly, Conbee II, div. Zigbee-Leuchten, Alexa, Homematic, Tablet UI