FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Canon.Fritz am 13 August 2017, 12:28:25

Titel: [gelöst] "Gezeitenkalender" Daten/Werte einer Webseite beziehen
Beitrag von: Canon.Fritz am 13 August 2017, 12:28:25
Hallo liebe Forengemeinde,

ich bin neu hier im Forum und habe probt mal die erste Frage an euch.

Ist es irgendwie möglich die Zeiten für das nächste Hoch- und Niedrigwasser von dieser Webseite zu beziehen und in Fhem einzulesen ?
http://www.bsh.de/cgi-bin/gezeiten/was_tab.pl?ort=DE__776P&zone=Gesetzliche+Zeit+%B9&niveau=KN (http://www.bsh.de/cgi-bin/gezeiten/was_tab.pl?ort=DE__776P&zone=Gesetzliche+Zeit+%B9&niveau=KN)

Ich habe bereits eine HTTP Abfrage von Spritpreisen realisiert, aber hier fehlt mir immer noch der richtige Ansatz.
Aus dem Quellcode der Seite kann ich die wichtigen Daten nicht finden
Titel: Antw:"Gezeitenkalender" Daten/Werte einer Webseite beziehen
Beitrag von: amenomade am 13 August 2017, 12:32:38
Ja, bestimmt mit HTTPMOD. https://fhem.de/commandref.html#HTTPMOD
Titel: Antw:"Gezeitenkalender" Daten/Werte einer Webseite beziehen
Beitrag von: Canon.Fritz am 13 August 2017, 12:37:24
Werde leider aus der commandref nicht so ganz schlau  :-[
Titel: Antw:"Gezeitenkalender" Daten/Werte einer Webseite beziehen
Beitrag von: amenomade am 13 August 2017, 17:27:09
reading01Regex (?s)Wasserstand<br.*?HW.*?(\d\d:\d\d)

Versuch einfach mal!
Titel: Antw:"Gezeitenkalender" Daten/Werte einer Webseite beziehen
Beitrag von: Canon.Fritz am 13 August 2017, 17:56:13
Mit welchem Attribut muss ich das ganze verknüpfen ?

Habe es mal so in die Kommandozeile eingegeben : attr Gezeiten reading01Regex (?s)Wasserstand<br.*?HW.*?(\d\d:\d\d)

Leider kein Erfolg.  :'(
Titel: Antw:"Gezeitenkalender" Daten/Werte einer Webseite beziehen
Beitrag von: amenomade am 13 August 2017, 18:06:42
Da musst Du auch ein reading01Name haben.

Hast Du überhaupt commandRef gelesen??? Da sind zahlreiche Beispiele! Bei dem ganz ersten Beispiel, hättest Du schon was du brauchst.
Titel: Antw:"Gezeitenkalender" Daten/Werte einer Webseite beziehen
Beitrag von: Canon.Fritz am 13 August 2017, 18:56:14
Nach mehreren Versuchen klappt es jetzt  :)
Ich bekomme die erste Uhrzeit aus der Tabelle.

Wie bekomme ich denn jetzt z.B. die ersten drei Uhrzeiten ins Fhem ?

Titel: Antw:"Gezeitenkalender" Daten/Werte einer Webseite beziehen
Beitrag von: amenomade am 13 August 2017, 19:09:45
Indem Du die entspr. Regex in reading02Regex, reading03Regex usw. aufbaust :) Dafür ist https://regex101.com/ perfekt.
Damit kannst Du meine vorgeschlagene Regex verstehen (regex101 erklärt alles Schritt für Schritt oben rechts).
Titel: Antw:"Gezeitenkalender" Daten/Werte einer Webseite beziehen
Beitrag von: Jojo11 am 13 August 2017, 19:20:24
Hallo,

ich hatte das auch erst über die website vom BSH versucht. Das passte aber nie ganz genau vom Format. Bin dann dazu übergegangen, die Gezeiten mit xtide selber zu berechnen.
Schau mal hier, da gibt es auch Kommandozeilenoptionen:
http://www.flaterco.com/xtide/advanced.html (http://www.flaterco.com/xtide/advanced.html)
Das Ergebnis ist fast identisch und was zurück kommt lässt sich einfacher weiterverarbeiten.

schöne Grüße
Jo
Titel: Antw:"Gezeitenkalender" Daten/Werte einer Webseite beziehen
Beitrag von: betateilchen am 13 August 2017, 19:33:39
Oben rechts auf der Seite gibt es übrigens ein Suchfeld. Und man darf das sogar benutzen!

Für die Gezeitenermittlung gibt es schon eine funktionierende Lösung hier im Forum.

https://forum.fhem.de/index.php/topic,25142.msg400161.html#msg400161
Titel: Antw:"Gezeitenkalender" Daten/Werte einer Webseite beziehen
Beitrag von: amenomade am 13 August 2017, 19:41:14
Zitat von: betateilchen am 13 August 2017, 19:33:39
Oben rechts auf der Seite gibt es übrigens ein Suchfeld. Und man darf das sogar benutzen!

Für die Gezeitenermittlung gibt es schon eine funktionierende Lösung hier im Forum.

https://forum.fhem.de/index.php/topic,25142.msg400161.html#msg400161

Ist aber nicht **FUN*** ! Und so lernt man nie, eigene Regex zu bauen ;) Deswegen auch, habe ich nicht sofort alle passende Regex geliefert, sonst kommt der Anwender immer wieder und wieder :) Ich kenne schon die nächste Frage: "Wie bekomme ich denn jetzt z.B. die zwei nächste Hoch/Niedrig Uhrzeiten ins Fhem ?"

Ausserdem nutzt dein Beispiel die alte (deprecated) Syntax
Zitat(The old syntax attr readingsNameX and attr readingsRegexX is still supported but it can go away in a future version of HTTPMOD so the new one with attr readingXName and attr readingXRegex should be preferred.



Titel: Antw:"Gezeitenkalender" Daten/Werte einer Webseite beziehen
Beitrag von: amenomade am 13 August 2017, 20:06:22
@Canon.Fritz: Falls du noch Hilfe brauchst, sag Bescheid. Aber bitte versuch zu lernen, statt Komplettlösung zu verlangen :) Langfristig wirst Du Zeit sparen :)


Aus http://www.bsh.de/cgi-bin/gezeiten/was_tab.pl?ort=DE__635P&zone=Gesetzliche+Zeit+%B9&niveau=KN
sieht man die Readings im Bild :)
Titel: Antw:"Gezeitenkalender" Daten/Werte einer Webseite beziehen
Beitrag von: Canon.Fritz am 13 August 2017, 20:32:10
@ betateilchen : danke für die INFO  ;D Meine Location wird von xTide leider nicht verarbeitet.

@ amenomade : Danke für die Tips  :) Ich werde mich die Woche nochmal dran machen die Daten von BSH zu verarbeiten. Bei weiteren Fragen komme ich gerne auf dich zurück.
Titel: Antw:"Gezeitenkalender" Daten/Werte einer Webseite beziehen
Beitrag von: Canon.Fritz am 14 August 2017, 22:01:38
Habe die erste Tabellenzeile endlich hin  ;D

Der Regex101 Tester ist echt super, wenn man erstmal verstanden hat wie er funktioniert.

Wie komme ich nun in die Zeilen 2, 3 usw. ?


Titel: Antw:"Gezeitenkalender" Daten/Werte einer Webseite beziehen
Beitrag von: amenomade am 14 August 2017, 22:06:49
Indem du weitere "Stichwörter" weiter in dem HTML identifiziert, um weiter zu matchen.

Z.B. wenn für die erste:
(?s)Wasserstand<br.*?header1.*?header3.*?>(\d\d:\d\d)
dann für die zweite:
(?s)Wasserstand<br.*?header4.*?header1.*?header3.*?>(\d\d:\d\d)
und für die dritte:
(?s)Wasserstand<br.*?header4.*?header4.*?header1.*?header3.*?>(\d\d:\d\d)
vierte:
(?s)Wasserstand<br.*?header4.*?header4.*?header4.*?header1.*?header3.*?>(\d\d:\d\d)
Titel: Antw:"Gezeitenkalender" Daten/Werte einer Webseite beziehen
Beitrag von: amenomade am 14 August 2017, 22:12:08
Dein reading01Regex matcht und extrahiert genau "Mo". Das wird dann immer Mo bringen, auch morgen, wenn die erste Linie nicht mehr "Mo" sein wird, sondern "Di".

Besser  (?s)Wasserstand<br.*?header1.*?>(..)
Titel: Antw:"Gezeitenkalender" Daten/Werte einer Webseite beziehen
Beitrag von: Canon.Fritz am 14 August 2017, 22:35:24
Besten Dank @ amenomade :)

Jetzt funktioniert alle wie es soll.
Danke nochmal für die Denkanstöße. Mit einer Musterlösung am Anfang hätte das ganze nur halb soviel Spaß gemacht.

Vielleicht folgen bei mir in Zukunft noch weitere Regex Projekte.

Titel: Antw:"Gezeitenkalender" Daten/Werte einer Webseite beziehen
Beitrag von: amenomade am 14 August 2017, 22:36:43
Kein Problem :)
Titel: Antw:"Gezeitenkalender" Daten/Werte einer Webseite beziehen
Beitrag von: betateilchen am 21 Dezember 2017, 18:29:43
Das geht jetzt auch ohne HTTPMOD :)

Im SVN unter ./contrib/betateilchen/ befindet sich die Moduldatei 55_bshGezeiten.pm mit der man die entsprechenden Gezeitenvorhersagen bekommt. Der Ansatz für die Umwandlung in readings ist ein etwas anderer.


READINGS:
     2017-12-21 18:15:37   state           active
     2017-12-21 16:36:47   stationName     Hamburg, St. Pauli
     2017-12-21 18:15:37   tidalInfo.01    HW 21.12. 18:31  3.9
     2017-12-21 18:15:37   tidalInfo.02    LW 22.12. 01:31  0.4
     2017-12-21 18:15:37   tidalInfo.03    HW 22.12. 06:39  4.2
     2017-12-21 18:15:37   tidalInfo.04    LW 22.12. 13:55  0.4
     2017-12-21 18:15:37   tidalInfo.05    HW 22.12. 19:03  3.9


Die Daten für die nächsten Hoch-/Niedrigwasserstände stehen immer in einem fortlaufend nummerierten reading "tidalInfo.xx", die einzelnen Werte sind innerhalb der Zeile durch Leerzeichen getrennt.

Die Definition ist relativ simpel



define bsh_hh bshGezeiten DE__508P



DE__508P ist dabei der location-Code, den man über die BSH Webseite heraufinden kann.

Standardmäßig werden die nächsten 8 Wasserstände angezeigt, grundsätzlich kann das Modul maximal die vom BSH bereitgestellten Werte der nächsten sieben Tage auswerten und anzeigen, dafür gibt es das Attribut "bsh_numEntries". Will man alle verfügbaren Werte haben, stellt man den Wert einfach auf 99 :) (pragmatische Lösung...)

Das Modul besitzt zwei interne Timer


was sonst noch?

Titel: Antw:"Gezeitenkalender" Daten/Werte einer Webseite beziehen
Beitrag von: Canon.Fritz am 31 Juli 2018, 21:43:10
Moin,

leider wurde auf der bsh Webseite die Vorhersage der Gezeiten entfernt.

Ich versuche schon verzweifelt meine Daten von einer anderen Webseite zu beziehen (Windfinder.de)

Leider komme ich mit dem Regex nicht mehr so ganz zurecht und bräuchte einen kleinen Denkanstoß  ;)
Anbei der Code der Webseite:
<section class="tidetables">

                <div class="tidetable">
                  <h3 class="h h--nomargin tidetable__date">Dienstag, Jul 31</h3>
                  <table border="0" class="tidetable__table">
                      <tbody><tr>
                          <th class="tidetable__time">Zeit</th>
                          <th class="tidetable__type">Typ</th>
                          <th class="tidetable__level">Wasserstand</th>
                      </tr>

                      <tr>
                          <td><span class="forecast-time" data-value="03:54">03:54</span></td>
                          <td><div class="icon icon-spot-tide-high"></div></td>
                          <td><span class="units-wh" data-value="4.69">4.69</span> <span class="units-desc-wh">m</span></td>
                      </tr>
                      <tr>
                          <td><span class="forecast-time" data-value="10:00">10:00</span></td>
                          <td><div class="icon icon-spot-tide-low"></div></td>
                          <td><span class="units-wh" data-value="0.73">0.73</span> <span class="units-desc-wh">m</span></td>
                      </tr>
                      <tr>
                          <td><span class="forecast-time" data-value="16:06">16:06</span></td>
                          <td><div class="icon icon-spot-tide-high"></div></td>
                          <td><span class="units-wh" data-value="5.02">5.02</span> <span class="units-desc-wh">m</span></td>
                      </tr>
                      <tr>
                          <td><span class="forecast-time" data-value="22:24">22:24</span></td>
                          <td><div class="icon icon-spot-tide-low"></div></td>
                          <td><span class="units-wh" data-value="0.65">0.65</span> <span class="units-desc-wh">m</span></td>
                      </tr>
                  </tbody></table>
                </div>
                <div class="tidetable">
                  <h3 class="h h--nomargin tidetable__date">Mittwoch, Aug 01</h3>
                  <table border="0" class="tidetable__table">
                      <tbody><tr>
                          <th class="tidetable__time">Zeit</th>
                          <th class="tidetable__type">Typ</th>
                          <th class="tidetable__level">Wasserstand</th>
                      </tr>

                      <tr>
                          <td><span class="forecast-time" data-value="04:28">04:28</span></td>
                          <td><div class="icon icon-spot-tide-high"></div></td>
                          <td><span class="units-wh" data-value="4.63">4.63</span> <span class="units-desc-wh">m</span></td>
                      </tr>
                      <tr>
                          <td><span class="forecast-time" data-value="10:32">10:32</span></td>
                          <td><div class="icon icon-spot-tide-low"></div></td>
                          <td><span class="units-wh" data-value="0.79">0.79</span> <span class="units-desc-wh">m</span></td>
                      </tr>
                      <tr>
                          <td><span class="forecast-time" data-value="16:38">16:38</span></td>
                          <td><div class="icon icon-spot-tide-high"></div></td>
                          <td><span class="units-wh" data-value="4.95">4.95</span> <span class="units-desc-wh">m</span></td>
                      </tr>
                      <tr>
                          <td><span class="forecast-time" data-value="22:56">22:56</span></td>
                          <td><div class="icon icon-spot-tide-low"></div></td>
                          <td><span class="units-wh" data-value="0.70">0.7</span> <span class="units-desc-wh">m</span></td>
                      </tr>
                  </tbody></table>
                </div>
                <div class="tidetable">
                  <h3 class="h h--nomargin tidetable__date">Donnerstag, Aug 02</h3>
                  <table border="0" class="tidetable__table">
                      <tbody><tr>
                          <th class="tidetable__time">Zeit</th>
                          <th class="tidetable__type">Typ</th>
                          <th class="tidetable__level">Wasserstand</th>
                      </tr>

                      <tr>
                          <td><span class="forecast-time" data-value="04:59">04:59</span></td>
                          <td><div class="icon icon-spot-tide-high"></div></td>
                          <td><span class="units-wh" data-value="4.53">4.53</span> <span class="units-desc-wh">m</span></td>
                      </tr>
                      <tr>
                          <td><span class="forecast-time" data-value="11:03">11:03</span></td>
                          <td><div class="icon icon-spot-tide-low"></div></td>
                          <td><span class="units-wh" data-value="0.84">0.84</span> <span class="units-desc-wh">m</span></td>
                      </tr>
                      <tr>
                          <td><span class="forecast-time" data-value="17:09">17:09</span></td>
                          <td><div class="icon icon-spot-tide-high"></div></td>
                          <td><span class="units-wh" data-value="4.87">4.87</span> <span class="units-desc-wh">m</span></td>
                      </tr>
                      <tr>
                          <td><span class="forecast-time" data-value="23:26">23:26</span></td>
                          <td><div class="icon icon-spot-tide-low"></div></td>
                          <td><span class="units-wh" data-value="0.74">0.74</span> <span class="units-desc-wh">m</span></td>
                      </tr>
                  </tbody></table>
                </div>
                <div class="tidetable">
                  <h3 class="h h--nomargin tidetable__date">Freitag, Aug 03</h3>
                  <table border="0" class="tidetable__table">
                      <tbody><tr>
                          <th class="tidetable__time">Zeit</th>
                          <th class="tidetable__type">Typ</th>
                          <th class="tidetable__level">Wasserstand</th>
                      </tr>

                      <tr>
                          <td><span class="forecast-time" data-value="05:31">05:31</span></td>
                          <td><div class="icon icon-spot-tide-high"></div></td>
                          <td><span class="units-wh" data-value="4.45">4.45</span> <span class="units-desc-wh">m</span></td>
                      </tr>
                      <tr>
                          <td><span class="forecast-time" data-value="11:33">11:33</span></td>
                          <td><div class="icon icon-spot-tide-low"></div></td>
                          <td><span class="units-wh" data-value="0.85">0.85</span> <span class="units-desc-wh">m</span></td>
                      </tr>
                      <tr>
                          <td><span class="forecast-time" data-value="17:44">17:44</span></td>
                          <td><div class="icon icon-spot-tide-high"></div></td>
                          <td><span class="units-wh" data-value="4.82">4.82</span> <span class="units-desc-wh">m</span></td>
                      </tr>
                      <tr>
                          <td><span class="forecast-time" data-value="23:59">23:59</span></td>
                          <td><div class="icon icon-spot-tide-low"></div></td>
                          <td><span class="units-wh" data-value="0.76">0.76</span> <span class="units-desc-wh">m</span></td>
                      </tr>
                  </tbody></table>
                </div>
                <div class="tidetable">
                  <h3 class="h h--nomargin tidetable__date">Samstag, Aug 04</h3>
                  <table border="0" class="tidetable__table">
                      <tbody><tr>
                          <th class="tidetable__time">Zeit</th>
                          <th class="tidetable__type">Typ</th>
                          <th class="tidetable__level">Wasserstand</th>
                      </tr>

                      <tr>
                          <td><span class="forecast-time" data-value="06:05">06:05</span></td>
                          <td><div class="icon icon-spot-tide-high"></div></td>
                          <td><span class="units-wh" data-value="4.41">4.41</span> <span class="units-desc-wh">m</span></td>
                      </tr>
                      <tr>
                          <td><span class="forecast-time" data-value="06:06">06:06</span></td>
                          <td><div class="icon icon-spot-tide-high"></div></td>
                          <td><span class="units-wh" data-value="4.41">4.41</span> <span class="units-desc-wh">m</span></td>
                      </tr>
                      <tr>
                          <td><span class="forecast-time" data-value="12:09">12:09</span></td>
                          <td><div class="icon icon-spot-tide-low"></div></td>
                          <td><span class="units-wh" data-value="0.84">0.84</span> <span class="units-desc-wh">m</span></td>
                      </tr>
                      <tr>
                          <td><span class="forecast-time" data-value="18:23">18:23</span></td>
                          <td><div class="icon icon-spot-tide-high"></div></td>
                          <td><span class="units-wh" data-value="4.76">4.76</span> <span class="units-desc-wh">m</span></td>
                      </tr>
                  </tbody></table>
                </div>
                <div class="tidetable">
                  <h3 class="h h--nomargin tidetable__date">Sonntag, Aug 05</h3>
                  <table border="0" class="tidetable__table">
                      <tbody><tr>
                          <th class="tidetable__time">Zeit</th>
                          <th class="tidetable__type">Typ</th>
                          <th class="tidetable__level">Wasserstand</th>
                      </tr>

                      <tr>
                          <td><span class="forecast-time" data-value="00:38">00:38</span></td>
                          <td><div class="icon icon-spot-tide-low"></div></td>
                          <td><span class="units-wh" data-value="0.79">0.79</span> <span class="units-desc-wh">m</span></td>
                      </tr>
                      <tr>
                          <td><span class="forecast-time" data-value="06:47">06:47</span></td>
                          <td><div class="icon icon-spot-tide-high"></div></td>
                          <td><span class="units-wh" data-value="4.38">4.38</span> <span class="units-desc-wh">m</span></td>
                      </tr>
                      <tr>
                          <td><span class="forecast-time" data-value="06:48">06:48</span></td>
                          <td><div class="icon icon-spot-tide-high"></div></td>
                          <td><span class="units-wh" data-value="4.38">4.38</span> <span class="units-desc-wh">m</span></td>
                      </tr>
                      <tr>
                          <td><span class="forecast-time" data-value="12:52">12:52</span></td>
                          <td><div class="icon icon-spot-tide-low"></div></td>
                          <td><span class="units-wh" data-value="0.86">0.86</span> <span class="units-desc-wh">m</span></td>
                      </tr>
                      <tr>
                          <td><span class="forecast-time" data-value="19:11">19:11</span></td>
                          <td><div class="icon icon-spot-tide-high"></div></td>
                          <td><span class="units-wh" data-value="4.69">4.69</span> <span class="units-desc-wh">m</span></td>
                      </tr>
                  </tbody></table>
                </div>
                <div class="tidetable">
                  <h3 class="h h--nomargin tidetable__date">Montag, Aug 06</h3>
                  <table border="0" class="tidetable__table">
                      <tbody><tr>
                          <th class="tidetable__time">Zeit</th>
                          <th class="tidetable__type">Typ</th>
                          <th class="tidetable__level">Wasserstand</th>
                      </tr>

                      <tr>
                          <td><span class="forecast-time" data-value="01:26">01:26</span></td>
                          <td><div class="icon icon-spot-tide-low"></div></td>
                          <td><span class="units-wh" data-value="0.85">0.85</span> <span class="units-desc-wh">m</span></td>
                      </tr>
                      <tr>
                          <td><span class="forecast-time" data-value="07:40">07:40</span></td>
                          <td><div class="icon icon-spot-tide-high"></div></td>
                          <td><span class="units-wh" data-value="4.35">4.35</span> <span class="units-desc-wh">m</span></td>
                      </tr>
                      <tr>
                          <td><span class="forecast-time" data-value="13:46">13:46</span></td>
                          <td><div class="icon icon-spot-tide-low"></div></td>
                          <td><span class="units-wh" data-value="0.95">0.95</span> <span class="units-desc-wh">m</span></td>
                      </tr>
                      <tr>
                          <td><span class="forecast-time" data-value="20:12">20:12</span></td>
                          <td><div class="icon icon-spot-tide-high"></div></td>
                          <td><span class="units-wh" data-value="4.59">4.59</span> <span class="units-desc-wh">m</span></td>
                      </tr>
                  </tbody></table>
                </div>
                <div class="tidetable">
                  <h3 class="h h--nomargin tidetable__date">Dienstag, Aug 07</h3>
                  <table border="0" class="tidetable__table">
                      <tbody><tr>
                          <th class="tidetable__time">Zeit</th>
                          <th class="tidetable__type">Typ</th>
                          <th class="tidetable__level">Wasserstand</th>
                      </tr>

                      <tr>
                          <td><span class="forecast-time" data-value="02:28">02:28</span></td>
                          <td><div class="icon icon-spot-tide-low"></div></td>
                          <td><span class="units-wh" data-value="0.95">0.95</span> <span class="units-desc-wh">m</span></td>
                      </tr>
                      <tr>
                          <td><span class="forecast-time" data-value="08:47">08:47</span></td>
                          <td><div class="icon icon-spot-tide-high"></div></td>
                          <td><span class="units-wh" data-value="4.33">4.33</span> <span class="units-desc-wh">m</span></td>
                      </tr>
                      <tr>
                          <td><span class="forecast-time" data-value="14:56">14:56</span></td>
                          <td><div class="icon icon-spot-tide-low"></div></td>
                          <td><span class="units-wh" data-value="1.04">1.04</span> <span class="units-desc-wh">m</span></td>
                      </tr>
                      <tr>
                          <td><span class="forecast-time" data-value="21:24">21:24</span></td>
                          <td><div class="icon icon-spot-tide-high"></div></td>
                          <td><span class="units-wh" data-value="4.53">4.53</span> <span class="units-desc-wh">m</span></td>
                      </tr>
                  </tbody></table>
                </div>
                <div class="tidetable">
                  <h3 class="h h--nomargin tidetable__date">Mittwoch, Aug 08</h3>
                  <table border="0" class="tidetable__table">
                      <tbody><tr>
                          <th class="tidetable__time">Zeit</th>
                          <th class="tidetable__type">Typ</th>
                          <th class="tidetable__level">Wasserstand</th>
                      </tr>

                      <tr>
                          <td><span class="forecast-time" data-value="03:45">03:45</span></td>
                          <td><div class="icon icon-spot-tide-low"></div></td>
                          <td><span class="units-wh" data-value="0.96">0.96</span> <span class="units-desc-wh">m</span></td>
                      </tr>
                      <tr>
                          <td><span class="forecast-time" data-value="10:05">10:05</span></td>
                          <td><div class="icon icon-spot-tide-high"></div></td>
                          <td><span class="units-wh" data-value="4.38">4.38</span> <span class="units-desc-wh">m</span></td>
                      </tr>
                      <tr>
                          <td><span class="forecast-time" data-value="16:20">16:20</span></td>
                          <td><div class="icon icon-spot-tide-low"></div></td>
                          <td><span class="units-wh" data-value="0.99">0.99</span> <span class="units-desc-wh">m</span></td>
                      </tr>
                      <tr>
                          <td><span class="forecast-time" data-value="22:44">22:44</span></td>
                          <td><div class="icon icon-spot-tide-high"></div></td>
                          <td><span class="units-wh" data-value="4.55">4.55</span> <span class="units-desc-wh">m</span></td>
                      </tr>
                  </tbody></table>
                </div>
                <div class="tidetable">
                  <h3 class="h h--nomargin tidetable__date">Donnerstag, Aug 09</h3>
                  <table border="0" class="tidetable__table">
                      <tbody><tr>
                          <th class="tidetable__time">Zeit</th>
                          <th class="tidetable__type">Typ</th>
                          <th class="tidetable__level">Wasserstand</th>
                      </tr>

                      <tr>
                          <td><span class="forecast-time" data-value="05:03">05:03</span></td>
                          <td><div class="icon icon-spot-tide-low"></div></td>
                          <td><span class="units-wh" data-value="0.83">0.83</span> <span class="units-desc-wh">m</span></td>
                      </tr>
                      <tr>
                          <td><span class="forecast-time" data-value="11:22">11:22</span></td>
                          <td><div class="icon icon-spot-tide-high"></div></td>
                          <td><span class="units-wh" data-value="4.52">4.52</span> <span class="units-desc-wh">m</span></td>
                      </tr>
                      <tr>
                          <td><span class="forecast-time" data-value="17:39">17:39</span></td>
                          <td><div class="icon icon-spot-tide-low"></div></td>
                          <td><span class="units-wh" data-value="0.78">0.78</span> <span class="units-desc-wh">m</span></td>
                      </tr>
                  </tbody></table>
                </div>
                <div class="tidetable">
                  <h3 class="h h--nomargin tidetable__date">Freitag, Aug 10</h3>
                  <table border="0" class="tidetable__table">
                      <tbody><tr>
                          <th class="tidetable__time">Zeit</th>
                          <th class="tidetable__type">Typ</th>
                          <th class="tidetable__level">Wasserstand</th>
                      </tr>

                      <tr>
                          <td><span class="forecast-time" data-value="00:00">00:00</span></td>
                          <td><div class="icon icon-spot-tide-high"></div></td>
                          <td><span class="units-wh" data-value="4.64">4.64</span> <span class="units-desc-wh">m</span></td>
                      </tr>
                      <tr>
                          <td><span class="forecast-time" data-value="06:13">06:13</span></td>
                          <td><div class="icon icon-spot-tide-low"></div></td>
                          <td><span class="units-wh" data-value="0.65">0.65</span> <span class="units-desc-wh">m</span></td>
                      </tr>
                      <tr>
                          <td><span class="forecast-time" data-value="12:30">12:30</span></td>
                          <td><div class="icon icon-spot-tide-high"></div></td>
                          <td><span class="units-wh" data-value="4.69">4.69</span> <span class="units-desc-wh">m</span></td>
                      </tr>
                      <tr>
                          <td><span class="forecast-time" data-value="18:49">18:49</span></td>
                          <td><div class="icon icon-spot-tide-low"></div></td>
                          <td><span class="units-wh" data-value="0.54">0.54</span> <span class="units-desc-wh">m</span></td>
                      </tr>
                  </tbody></table>
                </div>
                <div class="tidetable">
                  <h3 class="h h--nomargin tidetable__date">Samstag, Aug 11</h3>
                  <table border="0" class="tidetable__table">
                      <tbody><tr>
                          <th class="tidetable__time">Zeit</th>
                          <th class="tidetable__type">Typ</th>
                          <th class="tidetable__level">Wasserstand</th>
                      </tr>

                      <tr>
                          <td><span class="forecast-time" data-value="01:08">01:08</span></td>
                          <td><div class="icon icon-spot-tide-high"></div></td>
                          <td><span class="units-wh" data-value="4.73">4.73</span> <span class="units-desc-wh">m</span></td>
                      </tr>
                  </tbody></table>
                </div>

            </section>


Frage : Wie komme ich an die jeweiligen Daten für (Datum,Zeit,Typ,Wasserstand) ?

Ich hoffe es kann mir mal wider jemand auf die Sprünge helfen.
Titel: Antw:"Gezeitenkalender" Daten/Werte einer Webseite beziehen
Beitrag von: betateilchen am 01 August 2018, 12:14:10
Zitat von: Canon.Fritz am 31 Juli 2018, 21:43:10
leider wurde auf der bsh Webseite die Vorhersage der Gezeiten entfernt.

Das ist so nicht richtig. Die Gezeitenvorhersage gibt es dort nach wie vor, allerdings in anderer Form und nicht mehr als Tabelle.

Fakt ist, dass das BSH für die Einbindung von Gezeitendaten auf Webseiten von Drittanbietern nun richtig viel Geld haben möchte.
Mal schauen, wieviele der Anbieter von Gezeitendaten, die meistens auf die BSH Daten zurückgreifen, demnächst auf eine Veröffentlichung verzichten werden.

Mein bsh-Gezeitenmodul funktioniert aktuell zwar noch, aber auch auf der dafür verwendeten Webseite des BSH findet sich bereits der Hinweis, dass der Dienst eingestellt wird.

Titel: Antw:"Gezeitenkalender" Daten/Werte einer Webseite beziehen
Beitrag von: Canon.Fritz am 01 August 2018, 20:50:05
Okay, dann müssen wir uns also künftig eine andere Alternative als das bsh suchen.

Kann mir noch keiner einen Denkanstoß für die Windfinder Seite geben ?
Titel: Antw:"Gezeitenkalender" Daten/Werte einer Webseite beziehen
Beitrag von: Canon.Fritz am 02 August 2018, 21:40:59
Ich konnte nun doch die Werte der Windfinder Webseite entlocken.

Anbei poste ich mal meine Lösung für die jenigen, die sich auch einen Gezeitenkalender anlegen möchten.
Diese Variante gibt einen Überblick für die nächsten 3 Tage.

defmod Gezeiten_Windfinder HTTPMOD https://de.windfinder.com/tide/dangast 3600
attr Gezeiten_Windfinder userattr reading01Name reading01Regex reading02Name reading02Regex reading03Name reading03Regex reading04Name reading04Regex reading05Name reading05Regex reading06Name reading06Regex reading07Name reading07Regex reading08Name reading08Regex reading09Name reading09Regex reading10Name reading10Regex reading11Name reading11Regex reading12Name reading12Regex reading13Name reading13Regex reading14Name reading14Regex reading15Name reading15Regex reading16Name reading16Regex reading17Name reading17Regex reading18Name reading18Regex reading19Name reading19Regex reading20Name reading20Regex reading21Name reading21Regex reading22Name reading22Regex reading23Name reading23Regex reading24Name reading24Regex reading25Name reading25Regex reading26Name reading26Regex reading27Name reading27Regex reading28Name reading28Regex reading29Name reading29Regex reading30Name reading30Regex reading31Name reading31Regex reading32Name reading32Regex reading33Name reading33Regex reading34Name reading34Regex reading35Name reading35Regex reading36Name reading36Regex reading37Name reading37Regex reading38Name reading38Regex reading39Name reading39Regex
attr Gezeiten_Windfinder reading01Name fc1-Tag
attr Gezeiten_Windfinder reading01Regex (?s)h h--nomargin tidetable__date.*?>([a-zA-Z]+).*?
attr Gezeiten_Windfinder reading02Name fc1.1-Zeit
attr Gezeiten_Windfinder reading02Regex (?s)"forecast-time".*?>(\d\d:\d\d).*?
attr Gezeiten_Windfinder reading03Name fc1.1-Typ
attr Gezeiten_Windfinder reading03Regex (?s)icon icon-spot-tide-([a-zA-Z]+).*?
attr Gezeiten_Windfinder reading04Name fc1.1-Wasserstand
attr Gezeiten_Windfinder reading04Regex (?s)"units-wh".*?>(\d.\d\d).*?
attr Gezeiten_Windfinder reading05Name fc1.2-Zeit
attr Gezeiten_Windfinder reading05Regex (?s)"forecast-time".*?"forecast-time".*?>(\d\d:\d\d).*?
attr Gezeiten_Windfinder reading06Name fc1.2-Typ
attr Gezeiten_Windfinder reading06Regex (?s)icon icon-spot-tide-.*?icon icon-spot-tide-([a-zA-Z]+).*?
attr Gezeiten_Windfinder reading07Name fc1.2-Wasserstand
attr Gezeiten_Windfinder reading07Regex (?s)units-wh.*?units-wh.*?">(\d.\d\d).*?
attr Gezeiten_Windfinder reading08Name fc1.3-Zeit
attr Gezeiten_Windfinder reading08Regex (?s)"forecast-time".*?"forecast-time".*?"forecast-time".*?>(\d\d:\d\d).*?
attr Gezeiten_Windfinder reading09Name fc1.3-Typ
attr Gezeiten_Windfinder reading09Regex (?s)icon icon-spot-tide-.*?icon icon-spot-tide-.*?icon icon-spot-tide-([a-zA-Z]+).*?
attr Gezeiten_Windfinder reading10Name fc1.3-Wasserstand
attr Gezeiten_Windfinder reading10Regex (?s)"units-wh".*?"units-wh".*?"units-wh".*?>(\d.\d\d).*?
attr Gezeiten_Windfinder reading11Name fc1.4-Zeit
attr Gezeiten_Windfinder reading11Regex (?s)"forecast-time".*?"forecast-time".*?"forecast-time".*?"forecast-time".*?>(\d\d:\d\d).*?
attr Gezeiten_Windfinder reading12Name fc1.4-Typ
attr Gezeiten_Windfinder reading12Regex (?s)icon icon-spot-tide-.*?icon icon-spot-tide-.*?icon icon-spot-tide-.*?icon icon-spot-tide-([a-zA-Z]+).*?
attr Gezeiten_Windfinder reading13Name fc1.4-Wasserstand
attr Gezeiten_Windfinder reading13Regex (?s)"units-wh".*?"units-wh".*?"units-wh".*?"units-wh".*?>(\d.\d\d).*?
attr Gezeiten_Windfinder reading14Name fc2-Tag
attr Gezeiten_Windfinder reading14Regex (?s)h h--nomargin tidetable__date.*?h h--nomargin tidetable__date.*?>([a-zA-Z]+).*?
attr Gezeiten_Windfinder reading15Name fc2.1-Zeit
attr Gezeiten_Windfinder reading15Regex (?s)"forecast-time".*?"forecast-time".*?"forecast-time".*?"forecast-time".*?"forecast-time".*?>(\d\d:\d\d).*?
attr Gezeiten_Windfinder reading16Name fc2.1-Typ
attr Gezeiten_Windfinder reading16Regex (?s)icon icon-spot-tide-.*?icon icon-spot-tide-.*?icon icon-spot-tide-.*?icon icon-spot-tide-.*?icon icon-spot-tide-([a-zA-Z]+).*?
attr Gezeiten_Windfinder reading17Name fc2.1-Wasserstand
attr Gezeiten_Windfinder reading17Regex (?s)"units-wh".*?"units-wh".*?"units-wh".*?"units-wh".*?"units-wh".*?>(\d.\d\d).*?
attr Gezeiten_Windfinder reading18Name fc2.2-Zeit
attr Gezeiten_Windfinder reading18Regex (?s)"forecast-time".*?"forecast-time".*?"forecast-time".*?"forecast-time".*?"forecast-time".*?"forecast-time".*?>(\d\d:\d\d).*?
attr Gezeiten_Windfinder reading19Name fc2.2-Typ
attr Gezeiten_Windfinder reading19Regex (?s)icon icon-spot-tide-.*?icon icon-spot-tide-.*?icon icon-spot-tide-.*?icon icon-spot-tide-.*?icon icon-spot-tide-.*?icon icon-spot-tide-([a-zA-Z]+).*?
attr Gezeiten_Windfinder reading20Name fc2.2-Wasserstand
attr Gezeiten_Windfinder reading20Regex (?s)"units-wh".*?"units-wh".*?"units-wh".*?"units-wh".*?"units-wh".*?"units-wh".*?>(\d.\d\d).*?
attr Gezeiten_Windfinder reading21Name fc2.3-Zeit
attr Gezeiten_Windfinder reading21Regex (?s)"forecast-time".*?"forecast-time".*?"forecast-time".*?"forecast-time".*?"forecast-time".*?"forecast-time".*?"forecast-time".*?>(\d\d:\d\d).*?
attr Gezeiten_Windfinder reading22Name fc2.3-Typ
attr Gezeiten_Windfinder reading22Regex (?s)icon icon-spot-tide-.*?icon icon-spot-tide-.*?icon icon-spot-tide-.*?icon icon-spot-tide-.*?icon icon-spot-tide-.*?icon icon-spot-tide-.*?icon icon-spot-tide-([a-zA-Z]+).*?
attr Gezeiten_Windfinder reading23Name fc2.3-Wasserstand
attr Gezeiten_Windfinder reading23Regex (?s)"units-wh".*?"units-wh".*?"units-wh".*?"units-wh".*?"units-wh".*?"units-wh".*?"units-wh".*?>(\d.\d\d).*?
attr Gezeiten_Windfinder reading24Name fc2.4-Zeit
attr Gezeiten_Windfinder reading24Regex (?s)"forecast-time".*?"forecast-time".*?"forecast-time".*?"forecast-time".*?"forecast-time".*?"forecast-time".*?"forecast-time".*?"forecast-time".*?>(\d\d:\d\d).*?
attr Gezeiten_Windfinder reading25Name fc2.4-Typ
attr Gezeiten_Windfinder reading25Regex (?s)icon icon-spot-tide-.*?icon icon-spot-tide-.*?icon icon-spot-tide-.*?icon icon-spot-tide-.*?icon icon-spot-tide-.*?icon icon-spot-tide-.*?icon icon-spot-tide-.*?icon icon-spot-tide-([a-zA-Z]+).*?
attr Gezeiten_Windfinder reading26Name fc2.4-Wasserstand
attr Gezeiten_Windfinder reading26Regex (?s)"units-wh".*?"units-wh".*?"units-wh".*?"units-wh".*?"units-wh".*?"units-wh".*?"units-wh".*?"units-wh".*?>(\d.\d\d).*?
attr Gezeiten_Windfinder reading27Name fc3-Tag
attr Gezeiten_Windfinder reading27Regex (?s)h h--nomargin tidetable__date.*?h h--nomargin tidetable__date.*?h h--nomargin tidetable__date.*?>([a-zA-Z]+).*?
attr Gezeiten_Windfinder reading28Name fc3.1-Zeit
attr Gezeiten_Windfinder reading28Regex (?s)"forecast-time".*?"forecast-time".*?"forecast-time".*?"forecast-time".*?"forecast-time".*?"forecast-time".*?"forecast-time".*?"forecast-time".*?"forecast-time".*?>(\d\d:\d\d).*?
attr Gezeiten_Windfinder reading29Name fc3.1-Typ
attr Gezeiten_Windfinder reading29Regex (?s)icon icon-spot-tide-.*?icon icon-spot-tide-.*?icon icon-spot-tide-.*?icon icon-spot-tide-.*?icon icon-spot-tide-.*?icon icon-spot-tide-.*?icon icon-spot-tide-.*?icon icon-spot-tide-.*?icon icon-spot-tide-([a-zA-Z]+).*?
attr Gezeiten_Windfinder reading30Name fc3.1-Wasserstand
attr Gezeiten_Windfinder reading30Regex (?s)"units-wh".*?"units-wh".*?"units-wh".*?"units-wh".*?"units-wh".*?"units-wh".*?"units-wh".*?"units-wh".*?"units-wh".*?>(\d.\d\d).*?
attr Gezeiten_Windfinder reading31Name fc3.2-Zeit
attr Gezeiten_Windfinder reading31Regex (?s)"forecast-time".*?"forecast-time".*?"forecast-time".*?"forecast-time".*?"forecast-time".*?"forecast-time".*?"forecast-time".*?"forecast-time".*?"forecast-time".*?"forecast-time".*?>(\d\d:\d\d).*?
attr Gezeiten_Windfinder reading32Name fc3.2-Typ
attr Gezeiten_Windfinder reading32Regex (?s)icon icon-spot-tide-.*?icon icon-spot-tide-.*?icon icon-spot-tide-.*?icon icon-spot-tide-.*?icon icon-spot-tide-.*?icon icon-spot-tide-.*?icon icon-spot-tide-.*?icon icon-spot-tide-.*?icon icon-spot-tide-.*?icon icon-spot-tide-([a-zA-Z]+).*?
attr Gezeiten_Windfinder reading33Name fc3.2-Wasserstand
attr Gezeiten_Windfinder reading33Regex (?s)"units-wh".*?"units-wh".*?"units-wh".*?"units-wh".*?"units-wh".*?"units-wh".*?"units-wh".*?"units-wh".*?"units-wh".*?"units-wh".*?>(\d.\d\d).*?
attr Gezeiten_Windfinder reading34Name fc3.3-Zeit
attr Gezeiten_Windfinder reading34Regex (?s)"forecast-time".*?"forecast-time".*?"forecast-time".*?"forecast-time".*?"forecast-time".*?"forecast-time".*?"forecast-time".*?"forecast-time".*?"forecast-time".*?"forecast-time".*?"forecast-time".*?>(\d\d:\d\d).*?
attr Gezeiten_Windfinder reading35Name fc3.3-Typ
attr Gezeiten_Windfinder reading35Regex (?s)icon icon-spot-tide-.*?icon icon-spot-tide-.*?icon icon-spot-tide-.*?icon icon-spot-tide-.*?icon icon-spot-tide-.*?icon icon-spot-tide-.*?icon icon-spot-tide-.*?icon icon-spot-tide-.*?icon icon-spot-tide-.*?icon icon-spot-tide-.*?icon icon-spot-tide-([a-zA-Z]+).*?
attr Gezeiten_Windfinder reading36Name fc3.3-Wasserstand
attr Gezeiten_Windfinder reading36Regex (?s)"units-wh".*?"units-wh".*?"units-wh".*?"units-wh".*?"units-wh".*?"units-wh".*?"units-wh".*?"units-wh".*?"units-wh".*?"units-wh".*?"units-wh".*?>(\d.\d\d).*?
attr Gezeiten_Windfinder reading37Name fc3.4-Zeit
attr Gezeiten_Windfinder reading37Regex (?s)"forecast-time".*?"forecast-time".*?"forecast-time".*?"forecast-time".*?"forecast-time".*?"forecast-time".*?"forecast-time".*?"forecast-time".*?"forecast-time".*?"forecast-time".*?"forecast-time".*?"forecast-time".*?>(\d\d:\d\d).*?
attr Gezeiten_Windfinder reading38Name fc3.4-Typ
attr Gezeiten_Windfinder reading38Regex (?s)icon icon-spot-tide-.*?icon icon-spot-tide-.*?icon icon-spot-tide-.*?icon icon-spot-tide-.*?icon icon-spot-tide-.*?icon icon-spot-tide-.*?icon icon-spot-tide-.*?icon icon-spot-tide-.*?icon icon-spot-tide-.*?icon icon-spot-tide-.*?icon icon-spot-tide-.*?icon icon-spot-tide-([a-zA-Z]+).*?
attr Gezeiten_Windfinder reading39Name fc3.4-Wasserstand
attr Gezeiten_Windfinder reading39Regex (?s)"units-wh".*?"units-wh".*?"units-wh".*?"units-wh".*?"units-wh".*?"units-wh".*?"units-wh".*?"units-wh".*?"units-wh".*?"units-wh".*?"units-wh".*?"units-wh".*?>(\d.\d\d).*?
attr Gezeiten_Windfinder room 03_Wetter



Das Thema ist für mich erstmal gelöst  ;)

Titel: Antw:[gelöst] "Gezeitenkalender" Daten/Werte einer Webseite beziehen
Beitrag von: rischbiter123 am 04 August 2018, 18:52:34
Hier noch eine mögliche ReadingsGroup:
defmod Gezeiten_Whv readingsGroup TYPE=HTTPMOD:fc1-Tag,<br>,fc1\..*-Zeit,<br>,fc1\..*-Typ,<br>,fc1\..*-Wasserstand,<br>,fc2-Tag,<br>,fc2\..*-Zeit,<br>,fc2\..*-Typ,<br>,fc2\..*-Wasserstand,<br>,fc3-Tag,<br>,fc3\..*-Zeit,<br>,fc3\..*-Typ,<br>,fc3\..*-Wasserstand,<br>
attr Gezeiten_Whv fp_Termine 252,456,0,Gezeiten_Whv
attr Gezeiten_Whv nonames 1
attr Gezeiten_Whv notime 1
attr Gezeiten_Whv room Kalender
attr Gezeiten_Whv style style="font-size:12px;;;;font-weight:bold"


Leider ist es mir zu warm zum Formatieren. Icon statt high und low und m für Meter beim Wasserstand. Vielleicht hat ja jemand Lust und Zeit.
Titel: [wieder geöffnet] "Gezeitenkalender" Daten/Werte einer Webseite beziehen
Beitrag von: Canon.Fritz am 21 April 2020, 10:26:20
Hallo Zusammen,

leider hat Windfinder den Code der Webseite ein wenig angepasst.
Ich bekomme nun keine Daten mehr mit dem HTTPMOD ausgelesen.

Ich habe bereits mit regex101.com den neuen Code ausprobiert. Auf regex101 kann ich die Daten wunderbar ablesen (siehe Bild 1).

Es ist denkbar das in meinen HTTPMOD Device etwas aktiviert werden muss (siehe Bild 2 und 3).

Wann mir da mal jemand auf die Sprünge helfen ?
Titel: Antw:[wieder geöffnet] "Gezeitenkalender" Daten/Werte einer Webseite beziehen
Beitrag von: amenomade am 22 April 2020, 00:36:24
Bitte ein "list" vom Device statt Bildschirmkopien liefern. Mit Photos kann man kein copy/paste machen.

Die Seite, die Du im HTTPMOD aufrufst liefert kein "tidetable-day-date" zurück. Das kannst Du sehen, wenn Du das Attribut showBody auf 1 setzt.

Daher kriegst Du kein Reading

Das wird schwierig, da anscheinend alle Daten in einer API jetzt verlagert worden sind, und diese API braucht ein Token. Wenn Du mal die Doku dieser API findest kann man gucken.

Z.B. finde ich die Daten in Json Format hier: https://api.windfinder.com/v2/spots/de1729/tides/?limit=-1&customer=wfweb&version=1.0&token=ca350dcbe205826591c0895086217b60
Titel: Antw:[wieder geöffnet] "Gezeitenkalender" Daten/Werte einer Webseite beziehen
Beitrag von: amenomade am 22 April 2020, 01:29:50
OK
Mit folgendem kriege ich ein gültiges Token, und dann die Daten in JSON Format:
defmod Gezeiten_Windfinder HTTPMOD https://api.windfinder.com/v2/spots/de1729/tides/?limit=-1&customer=wfweb&version=1.0&token=$sid 0
attr Gezeiten_Windfinder enableControlSet 1
attr Gezeiten_Windfinder reAuthRegex UNAUTHORIZED
attr Gezeiten_Windfinder showBody 1
attr Gezeiten_Windfinder sid01IdRegex window.API_TOKEN = '(.*?)'
attr Gezeiten_Windfinder sid01URL https://de.windfinder.com/tide/dangast

Titel: Antw:[wieder geöffnet] "Gezeitenkalender" Daten/Werte einer Webseite beziehen
Beitrag von: amenomade am 22 April 2020, 01:39:26
Und z.B. mit
attr Gezeiten_Windfinder reading01Name High
attr Gezeiten_Windfinder reading01Regex dtl":"(.{25})","tp":"high.*?dtl":"(.{25})","tp":"high.*?dtl":"(.{25})","tp":"high.*?dtl":"(.{25})","tp":"high.*?dtl":"(.{25})","tp":"high.*?dtl":"(.{25})","tp":"high.*?dtl":"(.{25})","tp":"high
attr Gezeiten_Windfinder reading02Name Low
attr Gezeiten_Windfinder reading02Regex dtl":"(.{25})","tp":"low.*?dtl":"(.{25})","tp":"low.*?dtl":"(.{25})","tp":"low.*?dtl":"(.{25})","tp":"low.*?dtl":"(.{25})","tp":"low.*?dtl":"(.{25})","tp":"low.*?dtl":"(.{25})","tp":"low

die Gezeiten Readings
Die Feinheiten schaffst Du bestimmt selbst ;)
Titel: Antw:[wieder geöffnet] "Gezeitenkalender" Daten/Werte einer Webseite beziehen
Beitrag von: Canon.Fritz am 22 April 2020, 12:39:46
Zitat von: amenomade am 22 April 2020, 00:36:24
Bitte ein "list" vom Device statt Bildschirmkopien liefern. Mit Photos kann man kein copy/paste machen.

Sorry werde ich beim nächsten mal machen  ;)

Danke nochmal für den Tipp, das Attribut showBody auf 1 zu setzen. Da habe ich wieder etwas dazu gelernt.

Wie du jetzt aber an den api Link gekommen bist bzw. den API_TOKEN verwendest habe ich jetzt keine Ahnung. Aber es läuft auch bei mir einwandfrei 8).

Vielen Dank schon einmal @amenomade für deine Mühe und die schnelle Hilfe. Einfach top !!

Ich habe noch 2 Readings hinzugefügt, um die Wasserstände ablesen zu können:
attr test_Gezeiten_Windfinder reading03Name HW_Level
attr test_Gezeiten_Windfinder reading03Regex dtl":".*?,"tp":"high","th":([0-9].[0-9]?[0-9]?).*?dtl":".*?,"tp":"high","th":([0-9].[0-9]?[0-9]?).*?dtl":".*?,"tp":"high","th":([0-9].[0-9]?[0-9]?).*?dtl":".*?,"tp":"high","th":([0-9].[0-9]?[0-9]?).*?dtl":".*?,"tp":"high","th":([0-9].[0-9]?[0-9]?).*?dtl":".*?,"tp":"high","th":([0-9].[0-9]?[0-9]?).*?dtl":".*?,"tp":"high","th":([0-9].[0-9]?[0-9]?).*?
attr test_Gezeiten_Windfinder reading04Name NW_Level
attr test_Gezeiten_Windfinder reading04Regex dtl":".*?,"tp":"low","th":([0-9].[0-9]?[0-9]?).*?dtl":".*?,"tp":"low","th":([0-9].[0-9]?[0-9]?).*?dtl":".*?,"tp":"low","th":([0-9].[0-9]?[0-9]?).*?dtl":".*?,"tp":"low","th":([0-9].[0-9]?[0-9]?).*?dtl":".*?,"tp":"low","th":([0-9].[0-9]?[0-9]?).*?dtl":".*?,"tp":"low","th":([0-9].[0-9]?[0-9]?).*?dtl":".*?,"tp":"low","th":([0-9].[0-9]?[0-9]?).*?


Jetzt habe ich es nur noch nicht hinbekommen, vom reading01 oder reading02 das Datum und die Zeit in 2 getrennte readings zu verpacken  :-\

Wie schaffe ich es aus diesem Reading 2020-04-22T01:36:00+02:00

zwei neue anzulegen ? Das eine zeigt nur das Datum an2020-04-22
und das andere nur die Zeit 01:36

Vielleicht hättest du da noch eine Lösung für mich.
Titel: Antw:[wieder geöffnet] "Gezeitenkalender" Daten/Werte einer Webseite beziehen
Beitrag von: amenomade am 22 April 2020, 21:51:13
(.{25})
Das "capturing group" für genau 25 Zeichen

Wenn Du nur die 10 erste fangen willst, lässt Du die restliche raus:
(.{10}).{15}

Nur die 5 letzte:
.{20}(.{5})
Titel: Antw:[wieder geöffnet] "Gezeitenkalender" Daten/Werte einer Webseite beziehen
Beitrag von: Canon.Fritz am 24 April 2020, 08:56:05
Zitat von: amenomade am 22 April 2020, 21:51:13
(.{25})
Das "capturing group" für genau 25 Zeichen

Wenn Du nur die 10 erste fangen willst, lässt Du die restliche raus:
(.{10}).{15}

Nur die 5 letzte:
.{20}(.{5})


Perfekt so hat es geklappt  ;D

Vielen dank @amenomade. Jetzt wird alles perfekt ausgewertet.

Anbei zur Vervollständigung nochmal die komplette Device config:
defmod Gezeiten_Windfinder HTTPMOD https://api.windfinder.com/v2/spots/de1729/tides/?limit=-1&customer=wfweb&version=1.0&token=$sid 0
attr Gezeiten_Windfinder userattr reading01Name reading01Regex reading02Name reading02Regex reading03Name reading03Regex reading04Name reading04Regex reading05Name reading05Regex reading06Name reading06Regex sid01IdRegex sid01URL
attr Gezeiten_Windfinder DbLogExclude .*
attr Gezeiten_Windfinder enableControlSet 1
attr Gezeiten_Windfinder reAuthRegex UNAUTHORIZED
attr Gezeiten_Windfinder reading01Name HW_Tag
attr Gezeiten_Windfinder reading01Regex dtl":".{5}(.{5}).{15}","tp":"high.*?dtl":".{5}(.{5}).{15}","tp":"high.*?dtl":".{5}(.{5}).{15}","tp":"high.*?dtl":".{5}(.{5}).{15}","tp":"high.*?dtl":".{5}(.{5}).{15}","tp":"high.*?dtl":".{5}(.{5}).{15}","tp":"high.*?dtl":".{5}(.{5}).{15}","tp":"high
attr Gezeiten_Windfinder reading02Name HW_Zeit
attr Gezeiten_Windfinder reading02Regex dtl":".{11}(.{5}).{9}","tp":"high.*?dtl":".{11}(.{5}).{9}","tp":"high.*?dtl":".{11}(.{5}).{9}","tp":"high.*?dtl":".{11}(.{5}).{9}","tp":"high.*?dtl":".{11}(.{5}).{9}","tp":"high.*?dtl":".{11}(.{5}).{9}","tp":"high.*?dtl":".{11}(.{5}).{9}","tp":"high
attr Gezeiten_Windfinder reading03Name HW_Level
attr Gezeiten_Windfinder reading03Regex dtl":".*?,"tp":"high","th":([0-9].[0-9]?[0-9]?).*?dtl":".*?,"tp":"high","th":([0-9].[0-9]?[0-9]?).*?dtl":".*?,"tp":"high","th":([0-9].[0-9]?[0-9]?).*?dtl":".*?,"tp":"high","th":([0-9].[0-9]?[0-9]?).*?dtl":".*?,"tp":"high","th":([0-9].[0-9]?[0-9]?).*?dtl":".*?,"tp":"high","th":([0-9].[0-9]?[0-9]?).*?dtl":".*?,"tp":"high","th":([0-9].[0-9]?[0-9]?).*?
attr Gezeiten_Windfinder reading04Name NW_Tag
attr Gezeiten_Windfinder reading04Regex dtl":".{5}(.{5}).{15}","tp":"low.*?dtl":".{5}(.{5}).{15}","tp":"low.*?dtl":".{5}(.{5}).{15}","tp":"low.*?dtl":".{5}(.{5}).{15}","tp":"low.*?dtl":".{5}(.{5}).{15}","tp":"low.*?dtl":".{5}(.{5}).{15}","tp":"low.*?dtl":".{5}(.{5}).{15}","tp":"low
attr Gezeiten_Windfinder reading05Name NW_Zeit
attr Gezeiten_Windfinder reading05Regex dtl":".{11}(.{5}).{9}","tp":"low.*?dtl":".{11}(.{5}).{9}","tp":"low.*?dtl":".{11}(.{5}).{9}","tp":"low.*?dtl":".{11}(.{5}).{9}","tp":"low.*?dtl":".{11}(.{5}).{9}","tp":"low.*?dtl":".{11}(.{5}).{9}","tp":"low.*?dtl":".{11}(.{5}).{9}","tp":"low
attr Gezeiten_Windfinder reading06Name NW_Level
attr Gezeiten_Windfinder reading06Regex dtl":".*?,"tp":"low","th":([0-9].[0-9]?[0-9]?).*?dtl":".*?,"tp":"low","th":([0-9].[0-9]?[0-9]?).*?dtl":".*?,"tp":"low","th":([0-9].[0-9]?[0-9]?).*?dtl":".*?,"tp":"low","th":([0-9].[0-9]?[0-9]?).*?dtl":".*?,"tp":"low","th":([0-9].[0-9]?[0-9]?).*?dtl":".*?,"tp":"low","th":([0-9].[0-9]?[0-9]?).*?dtl":".*?,"tp":"low","th":([0-9].[0-9]?[0-9]?).*?
attr Gezeiten_Windfinder room 02_Außen_Klima->Gezeiten
attr Gezeiten_Windfinder showBody 1
attr Gezeiten_Windfinder sid01IdRegex window.API_TOKEN = '(.*?)'
attr Gezeiten_Windfinder sid01URL https://de.windfinder.com/tide/dangast


Ausgewertet sieht es dann so aus (siehe Bild Backend, FTUI)
Titel: Antw:[gelöst] "Gezeitenkalender" Daten/Werte einer Webseite beziehen
Beitrag von: amenomade am 24 April 2020, 19:54:18
Vielleicht noch ein "list" vom ReadingsGroup? Danke :) Oder html von FTUI wenn das nur in FTUI definiert
Titel: Antw:[gelöst] "Gezeitenkalender" Daten/Werte einer Webseite beziehen
Beitrag von: Canon.Fritz am 25 April 2020, 09:54:26
Ich habe es nur in FTUI definiert, da ich das Backend nur für die reine Verwaltung benutze.

anbei die html für den Gezeiten Kalender in FTUI.
<!-- Gezeitenkalender -->
<li data-row="1" data-col="10" data-sizex="3" data-sizey="3">
<header><font size="+1">Gezeitenkalender</font></header>
<div class="cell">
<table class="calls" width="100%">
<tr>
<td><div class="calls darker large">Tag:&nbsp;</div></td>
<td><div class="calls darker large">Zeit:&nbsp;</div></td>
<td><div class="calls darker large">Typ:&nbsp;</div></td>
<td><div class="calls darker large">Wasserstand:&nbsp;</div></td>
</tr>
<!-- 1. Zeile HW-1-->
<tr>
<td><div class="large" data-type="label" data-colors='["#B28F00"]' data-limits='["0"]'
data-device="Gezeiten_Windfinder" data-get="HW_Tag-1"></div>

<td><div class="large" data-type="label" data-colors='["#B28F00"]' data-limits='["0"]'
data-device="Gezeiten_Windfinder" data-get="HW_Zeit-1"></div>

<td><div class="narrow compressed" data-type="symbol"
data-icon='fa-angle-double-up'
data-color="green"></div>

<td><div class="large" data-type="label" data-colors='["#00BFFF"]' data-limits='["0"]'
data-device="Gezeiten_Windfinder" data-get="HW_Level-1"></div>
</tr>
<!-- 2. Zeile NW-1-->
<tr>

<td><div class="large" data-type="label" data-colors='["#B28F00"]' data-limits='["0"]'
data-device="Gezeiten_Windfinder" data-get="NW_Tag-1"></div>

<td><div class="large" data-type="label" data-colors='["#B28F00"]' data-limits='["0"]'
data-device="Gezeiten_Windfinder" data-get="NW_Zeit-1"></div>

<td><div class="narrow compressed" data-type="symbol"
data-icon='fa-angle-double-down'
data-color="blue"></div>

<td><div class="large" data-type="label" data-colors='["#00BFFF"]' data-limits='["0"]'
data-device="Gezeiten_Windfinder" data-get="NW_Level-1"></div>
</tr>
<!-- 3. Zeile HW-2-->
<tr>
<td><div class="large" data-type="label" data-colors='["#B28F00"]' data-limits='["0"]'
data-device="Gezeiten_Windfinder" data-get="HW_Tag-2"></div>

<td><div class="large" data-type="label" data-colors='["#B28F00"]' data-limits='["0"]'
data-device="Gezeiten_Windfinder" data-get="HW_Zeit-2"></div>

<td><div class="narrow compressed" data-type="symbol"
data-icon='fa-angle-double-up'
data-color="green"></div>

<td><div class="large" data-type="label" data-colors='["#00BFFF"]' data-limits='["0"]'
data-device="Gezeiten_Windfinder" data-get="HW_Level-2"></div>
</tr>
<!-- 4. Zeile NW-2-->
<tr>
<td><div class="large" data-type="label" data-colors='["#B28F00"]' data-limits='["0"]'
data-device="Gezeiten_Windfinder" data-get="NW_Tag-2"></div>

<td><div class="large" data-type="label" data-colors='["#B28F00"]' data-limits='["0"]'
data-device="Gezeiten_Windfinder" data-get="NW_Zeit-2"></div>

<td><div class="narrow compressed" data-type="symbol"
data-icon='fa-angle-double-down'
data-color="blue"></div>

<td><div class="large" data-type="label" data-colors='["#00BFFF"]' data-limits='["0"]'
data-device="Gezeiten_Windfinder" data-get="NW_Level-2"></div>
</tr>
<!-- 5. Zeile HW-3-->
<tr>
<td><div class="large" data-type="label" data-colors='["#B28F00"]' data-limits='["0"]'
data-device="Gezeiten_Windfinder" data-get="HW_Tag-3"></div>

<td><div class="large" data-type="label" data-colors='["#B28F00"]' data-limits='["0"]'
data-device="Gezeiten_Windfinder" data-get="HW_Zeit-3"></div>

<td><div class="narrow compressed" data-type="symbol"
data-icon='fa-angle-double-up'
data-color="green"></div>

<td><div class="large" data-type="label" data-colors='["#00BFFF"]' data-limits='["0"]'
data-device="Gezeiten_Windfinder" data-get="HW_Level-3"></div>
</tr>
<!-- 6. Zeile NW-3-->
<tr>
<td><div class="large" data-type="label" data-colors='["#B28F00"]' data-limits='["0"]'
data-device="Gezeiten_Windfinder" data-get="NW_Tag-3"></div>

<td><div class="large" data-type="label" data-colors='["#B28F00"]' data-limits='["0"]'
data-device="Gezeiten_Windfinder" data-get="NW_Zeit-3"></div>

<td><div class="narrow compressed" data-type="symbol"
data-icon='fa-angle-double-down'
data-color="blue"></div>

<td><div class="large" data-type="label" data-colors='["#00BFFF"]' data-limits='["0"]'
data-device="Gezeiten_Windfinder" data-get="NW_Level-3"></div>
</tr>
<!-- 7. Zeile HW-4-->
<tr>
<td><div class="large" data-type="label" data-colors='["#B28F00"]' data-limits='["0"]'
data-device="Gezeiten_Windfinder" data-get="HW_Tag-4"></div>

<td><div class="large" data-type="label" data-colors='["#B28F00"]' data-limits='["0"]'
data-device="Gezeiten_Windfinder" data-get="HW_Zeit-4"></div>

<td><div class="narrow compressed" data-type="symbol"
data-icon='fa-angle-double-up'
data-color="green"></div>

<td><div class="large" data-type="label" data-colors='["#00BFFF"]' data-limits='["0"]'
data-device="Gezeiten_Windfinder" data-get="HW_Level-4"></div>
</tr>
<!-- 8. Zeile NW-4-->
<tr>
<td><div class="large" data-type="label" data-colors='["#B28F00"]' data-limits='["0"]'
data-device="Gezeiten_Windfinder" data-get="NW_Tag-4"></div>

<td><div class="large" data-type="label" data-colors='["#B28F00"]' data-limits='["0"]'
data-device="Gezeiten_Windfinder" data-get="NW_Zeit-4"></div>

<td><div class="narrow compressed" data-type="symbol"
data-icon='fa-angle-double-down'
data-color="blue"></div>

<td><div class="large" data-type="label" data-colors='["#00BFFF"]' data-limits='["0"]'
data-device="Gezeiten_Windfinder" data-get="NW_Level-4"></div>
</tr>
<!-- 9. Zeile HW-5-->
<tr>
<td><div class="large" data-type="label" data-colors='["#B28F00"]' data-limits='["0"]'
data-device="Gezeiten_Windfinder" data-get="HW_Tag-5"></div>

<td><div class="large" data-type="label" data-colors='["#B28F00"]' data-limits='["0"]'
data-device="Gezeiten_Windfinder" data-get="HW_Zeit-5"></div>

<td><div class="narrow compressed" data-type="symbol"
data-icon='fa-angle-double-up'
data-color="green"></div>

<td><div class="large" data-type="label" data-colors='["#00BFFF"]' data-limits='["0"]'
data-device="Gezeiten_Windfinder" data-get="HW_Level-5"></div>
</tr>
<!-- 10. Zeile NW-5-->
<tr>
<td><div class="large" data-type="label" data-colors='["#B28F00"]' data-limits='["0"]'
data-device="Gezeiten_Windfinder" data-get="NW_Tag-5"></div>

<td><div class="large" data-type="label" data-colors='["#B28F00"]' data-limits='["0"]'
data-device="Gezeiten_Windfinder" data-get="NW_Zeit-5"></div>

<td><div class="narrow compressed" data-type="symbol"
data-icon='fa-angle-double-down'
data-color="blue"></div>

<td><div class="large" data-type="label" data-colors='["#00BFFF"]' data-limits='["0"]'
data-device="Gezeiten_Windfinder" data-get="NW_Level-5"></div>
</tr>
<!-- 11. Zeile HW-6-->
<tr>
<td><div class="large" data-type="label" data-colors='["#B28F00"]' data-limits='["0"]'
data-device="Gezeiten_Windfinder" data-get="HW_Tag-6"></div>

<td><div class="large" data-type="label" data-colors='["#B28F00"]' data-limits='["0"]'
data-device="Gezeiten_Windfinder" data-get="HW_Zeit-6"></div>

<td><div class="narrow compressed" data-type="symbol"
data-icon='fa-angle-double-up'
data-color="green"></div>

<td><div class="large" data-type="label" data-colors='["#00BFFF"]' data-limits='["0"]'
data-device="Gezeiten_Windfinder" data-get="HW_Level-6"></div>
</tr>
<!-- 12. Zeile NW-6-->
<tr>
<td><div class="large" data-type="label" data-colors='["#B28F00"]' data-limits='["0"]'
data-device="Gezeiten_Windfinder" data-get="NW_Tag-6"></div>

<td><div class="large" data-type="label" data-colors='["#B28F00"]' data-limits='["0"]'
data-device="Gezeiten_Windfinder" data-get="NW_Zeit-6"></div>

<td><div class="narrow compressed" data-type="symbol"
data-icon='fa-angle-double-down'
data-color="blue"></div>

<td><div class="large" data-type="label" data-colors='["#00BFFF"]' data-limits='["0"]'
data-device="Gezeiten_Windfinder" data-get="NW_Level-6"></div>
</tr>
                    <!-- 13. Zeile HW-7-->
<tr>
<td><div class="large" data-type="label" data-colors='["#B28F00"]' data-limits='["0"]'
data-device="Gezeiten_Windfinder" data-get="HW_Tag-7"></div>

<td><div class="large" data-type="label" data-colors='["#B28F00"]' data-limits='["0"]'
data-device="Gezeiten_Windfinder" data-get="HW_Zeit-7"></div>

<td><div class="narrow compressed" data-type="symbol"
data-icon='fa-angle-double-up'
data-color="green"></div>

<td><div class="large" data-type="label" data-colors='["#00BFFF"]' data-limits='["0"]'
data-device="Gezeiten_Windfinder" data-get="HW_Level-7"></div>
</tr>
<!-- 14. Zeile NW-7-->
<tr>
<td><div class="large" data-type="label" data-colors='["#B28F00"]' data-limits='["0"]'
data-device="Gezeiten_Windfinder" data-get="NW_Tag-7"></div>

<td><div class="large" data-type="label" data-colors='["#B28F00"]' data-limits='["0"]'
data-device="Gezeiten_Windfinder" data-get="NW_Zeit-7"></div>

<td><div class="narrow compressed" data-type="symbol"
data-icon='fa-angle-double-down'
data-color="blue"></div>

<td><div class="large" data-type="label" data-colors='["#00BFFF"]' data-limits='["0"]'
data-device="Gezeiten_Windfinder" data-get="NW_Level-7"></div>
</tr>
</table>
</div>
</li>