FHEM > Sonstiges

HTTPMOD Auslesen einer Sauna Belegungsanzeige von einer Homepage

(1/2) > >>

Rewe2000:
Hallo,

ich versuche schon seit längeren die Belegung einer Sauna eines Freizeitbades über HTTPMOD in ein Reading zu bekommen. Irgendwie scheint es mir, ist es nicht möglich den Inhalt ab <multiple-ticos-bar-counter mit HTTPMOD gelesen zu bekommen. Egal was ich da als Suchbegriff im Regex auch verwende, es wird nichts innerhalb von <multiple-ticos-bar-counter gefunden.

Die URL der sehr einfachen Seite lautet wie folgt: https://www.swg-gun.de/besuchercounter_saunadorf.html


Ich würde gerne die beiden Werte im HTML Code nach dem Gleichheitszeichen lesen wollen:
class="progress-bar-danger bg-danger progress-bar" aria-valuenow=??
class="progress-bar-success bg-success progress-bar" aria-valuenow=??

Der HTML-Code der Seite lautet wie folgt:

--- Code: ---html><head>
  <!-- Ticos specific ressources -->
  <!-- Attention CORS is activated: The domain must be activated from support@ticos-systems.ch <mailto:support@ticos-systems.ch> . -->
  <link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" rel="stylesheet">
  <script src="https://app.ticos-systems.cloud/scripts/AngularEmbeddedCounter.js"></script>
<style>@import "https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css";.progress-bar[_ngcontent-igh-c5]{font-size:1em}</style><style>@import "https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css";.main[_ngcontent-igh-c4]{margin:10px;font-size:2rem}.powered-by[_ngcontent-igh-c4]{font-size:1rem;text-align:right}.title[_ngcontent-igh-c4]{margin-top:.1rem}.ticos-progress-bar[_ngcontent-igh-c4]{height:7vh;font-size:calc(2vh + 10px);min-height:50px}.description[_ngcontent-igh-c4]{font-size:1rem}</style><style>[_nghost-igh-c2] {
      width: 100%;
      display: flex;
    }</style></head>
<body>
  <div>
    <multiple-ticos-bar-counter tenant="2109" interval="10000" organizations="[30219]" displays="[&quot;Saunadorf im Juramare&quot;]" _nghost-igh-c5="" ng-version="9.0.7"><div _ngcontent-igh-c5=""><ticos-bar _ngcontent-igh-c5="" _nghost-igh-c4=""><div _ngcontent-igh-c4="" class="main card"><div _ngcontent-igh-c4="" class="card-body"><progressbar _ngcontent-igh-c4="" type="success" class="ticos-progress-bar progress" _nghost-igh-c2="" max="100"><!----><bar _ngcontent-igh-c2="" role="progressbar" aria-valuemin="0" class="progress-bar-danger bg-danger progress-bar" aria-valuenow="30" aria-valuetext="30%" style="height: 100%; width: 30%;">30</bar><bar _ngcontent-igh-c2="" role="progressbar" aria-valuemin="0" class="progress-bar-success bg-success progress-bar" aria-valuenow="70" aria-valuetext="70%" style="height: 100%; width: 70%;">70</bar><!----><!----></progressbar><div _ngcontent-igh-c4="" class="title"><b _ngcontent-igh-c4="">Saunadorf im Juramare</b></div><!----><!----><div _ngcontent-igh-c4="" class="powered-by"> Powered by Ticos Systems </div></div></div></ticos-bar></div><!---->
    </multiple-ticos-bar-counter>
  </div>
</body></html>
--- Ende Code ---

Gibt es da eine Möglichkeit an die beiden Werte heranzukommen?
Ich wollte diese Daten in einem Trend darstellen, um die Zeiten mit der geringsten Belegung zu ermitteln.

Wahrscheinlich sind da tiefere Kenntnisse notwendig als ich sie mitbringe.
Über ein wenig Nachhilfe würde ich mich freuen.

Gruß Reinhard

Rewe2000:
Hallo,

keiner eine Idee oder zumindest einen Tipp für mich?
Mache ich da etwas falsch oder sind die HTML-Daten des Zählers nicht über HTTPMOD zu lesen?

Mein Regex sollte funktionieren, prüfe ich dieses mit "The Regex Coach" liefert es die passenden Werte.

Über einen Tipp würde ich mich freuen.

Gruß Reinhard

StefanStrobel:
Hallo Reinhard,

wie sieht denn Deine Regex bzw. die konkrete Konfiguration aus?

Gruss
   Stefan

gestein:
Hallo Stefan,

ich habe mich auch an sowas versucht.
Mittlerweile klappt es.

Wie hast Du denn die regex formuliert? Ist der Wert, den Du im Reading haben möchtest in "()"?
https://forum.fhem.de/index.php/topic,123521.0.html

lg, Gerhard

Rewe2000:
Hallo,

zunächst mal vorab vielen Dank für euere Mühe.

Ich liefere zunächst noch einige Daten nach.
Das List des HTTPMOD Device bei mir, sieht wie folgt aus:

--- Code: ---Internals:
   BUSY       0
   CFGFN     
   DEF        https://www.swg-gun.de/besuchercounter_saunadorf.html 600
   FUUID      6171a443-f33f-7df9-ef2c-1cf1ce132b630123
   Interval   600
   MainURL    https://www.swg-gun.de/besuchercounter_saunadorf.html
   ModuleVersion 4.1.10 - 6.7.2021
   NAME       Sauna_Belegung
   NOTIFYDEV  global
   NR         27004
   NTFY_ORDER 50-Sauna_Belegung
   STATE      Belegung: Anwesend Personen
   TYPE       HTTPMOD
   value     
   CompiledRegexes:
   HttpUtils:
     NAME       
     addr       https://www.swg-gun.de:443
     auth       0
     buf       
     code       200
     compress   1
     conn       
     data       
     displayurl https://www.swg-gun.de/besuchercounter_saunadorf.html
     header     
     host       www.swg-gun.de
     httpheader HTTP/1.1 200 OK
Date: Thu, 21 Oct 2021 17:39:19 GMT
Server: Apache
Upgrade: h2
Connection: Upgrade, close
Last-Modified: Mon, 24 Aug 2020 09:18:20 GMT
ETag: "2ad-5ad9c11482f00"
Accept-Ranges: bytes
Content-Length: 685
x-xss-protection: 1; mode=block
Content-Type: text/html
     httpversion 1.0
     hu_blocking 0
     hu_filecount 1
     hu_port    443
     hu_portSfx
     ignoreredirects 1
     loglevel   4
     path       /besuchercounter_saunadorf.html
     protocol   https
     redirects  0
     timeout    2
     url        https://www.swg-gun.de/besuchercounter_saunadorf.html
     sslargs:
   QUEUE:
   READINGS:
   REQUEST:
     context    reading
     data       
     header     
     ignoreredirects 0
     num        unknown
     retryCount 0
     type       update
     url        https://www.swg-gun.de/besuchercounter_saunadorf.html
Attributes:
   DbLogExclude .*
   comment    Dieses Modul liest von der Homepage von "https://www.swg-gun.de/Freizeitbaeder/Saunadorf-im-Juramare" die Belegung der Sauna aus und legt diese in dem Reading Belegung ab.
   disable    0
   enableControlSet 1
   reading01Name Anwesend
   reading01Regex class="progress-bar-danger bg-danger progress-bar" aria-valuenow="([0-9.]+)
   stateFormat Belegung: Anwesend Personen
   verbose    2
--- Ende Code ---

Sehe ich mir das Callback unter Verbose 5 an, so fehlt der Teil im HTML, nachdem ich eigentlich suche:

--- Code: ---2021.10.21 19:42:41 4: Sauna_Belegung: Read callback: request type was update retry 0,
header: HTTP/1.1 200 OK
Date: Thu, 21 Oct 2021 17:42:41 GMT
Server: Apache
Upgrade: h2
Connection: Upgrade, close
Last-Modified: Mon, 24 Aug 2020 09:18:20 GMT
ETag: "2ad-5ad9c11482f00"
Accept-Ranges: bytes
Content-Length: 685
x-xss-protection: 1; mode=block
Content-Type: text/html, body length 685
2021.10.21 19:42:41 5: Sauna_Belegung: Read callback: body
<html>
<head>
  <!-- Ticos specific ressources -->
  <!-- Attention CORS is activated: The domain must be activated from support@ticos-systems.ch <mailto:support@ticos-systems.ch> . -->
  <link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" rel="stylesheet">
  <script src="https://app.ticos-systems.cloud/scripts/AngularEmbeddedCounter.js"></script>
</head>
<body>
  <div>
    <multiple-ticos-bar-counter tenant="2109"
                                interval="10000"
                                organizations="[30219]"
                                displays='["Saunadorf im Juramare"]'>
    </multiple-ticos-bar-counter>
  </div>
</body>
</html>

--- Ende Code ---

Sehe ich mir den HTML-Code mit Firefox (rechte Maustaste "Untersuchen") an, so ist auch der Teil enthalten (4. Zeile von unten), welchen ich mit dem RegEx lesen will:

--- Code: ---<html><head>
  <!-- Ticos specific ressources -->
  <!-- Attention CORS is activated: The domain must be activated from support@ticos-systems.ch <mailto:support@ticos-systems.ch> . -->
  <link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" rel="stylesheet">
  <script src="https://app.ticos-systems.cloud/scripts/AngularEmbeddedCounter.js"></script>
<style>@import "https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css";.progress-bar[_ngcontent-dfk-c5]{font-size:1em}</style><style>@import "https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css";.main[_ngcontent-dfk-c4]{margin:10px;font-size:2rem}.powered-by[_ngcontent-dfk-c4]{font-size:1rem;text-align:right}.title[_ngcontent-dfk-c4]{margin-top:.1rem}.ticos-progress-bar[_ngcontent-dfk-c4]{height:7vh;font-size:calc(2vh + 10px);min-height:50px}.description[_ngcontent-dfk-c4]{font-size:1rem}</style><style>[_nghost-dfk-c2] {
      width: 100%;
      display: flex;
    }</style></head>
<body>
  <div>
    <multiple-ticos-bar-counter tenant="2109" interval="10000" organizations="[30219]" displays="[&quot;Saunadorf im Juramare&quot;]" _nghost-dfk-c5="" ng-version="9.0.7"><div _ngcontent-dfk-c5=""><ticos-bar _ngcontent-dfk-c5="" _nghost-dfk-c4=""><div _ngcontent-dfk-c4="" class="main card"><div _ngcontent-dfk-c4="" class="card-body"><progressbar _ngcontent-dfk-c4="" type="success" class="ticos-progress-bar progress" _nghost-dfk-c2="" max="100"><!----><bar _ngcontent-dfk-c2="" role="progressbar" aria-valuemin="0" class="progress-bar-danger bg-danger progress-bar" aria-valuenow="55" aria-valuetext="55%" style="height: 100%; width: 55%;">55</bar><bar _ngcontent-dfk-c2="" role="progressbar" aria-valuemin="0" class="progress-bar-success bg-success progress-bar" aria-valuenow="45" aria-valuetext="45%" style="height: 100%; width: 45%;">45</bar><!----><!----></progressbar><div _ngcontent-dfk-c4="" class="title"><b _ngcontent-dfk-c4="">Saunadorf im Juramare</b></div><!----><!----><div _ngcontent-dfk-c4="" class="powered-by"> Powered by Ticos Systems </div></div></div></ticos-bar></div><!---->
    </multiple-ticos-bar-counter>
  </div>


</body></html>
--- Ende Code ---

Ich vermute fast, mein RegEx ist korrekt, aber der gesuchte HTML-Code wird durch mein HTTPMOD Modul überhaupt nicht gelesen.
Es wäre nett es sieht sich jemand den HTML-Code an, ob dieser grundsätzlich über HTTPMod zu lesen ist und gibt mir einen Tipp was ich ändern muss, damit es klappt.

Gruß Reinhard

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln