Hallo und ein Frohes neue Jahr!
Ich möchte von der Seite https://www.netzfrequenz.info/json/act.json
alle 30 Sekunden die aktuelle Netzfrequenz auslsen. Leider bekomme ich das nicht hin. Mit der Wiki und einem Forenbeitrag bin ich auch nicht weitergekommen.
define NFTEST HTTPMOD https://www.netzfrequenz.info/json/act.json 60
setuuid NFTEST 6595059e-f33f-f9d3-f7ce-65a2886d29028530
attr NFTEST enableControlSet 1
attr NFTEST room test
Die Seite gibt nur den aktuellen weet aus, sonst nichts
<html><head><meta name="viewport" content="width=device-width"><title>https://www.netzfrequenz.info/json/act.json</title><link rel="stylesheet" type="text/css" href="resource://content-accessible/viewsource.css"></head><body id="viewsource" class="highlight" style="tab-size: 4"><pre>50.018</pre></body></html>
Vermutlich ist die lösung ganz einfach, ich wäre dankbar wenn mir da jemand helfen könnte.
VG
ZitatDie Seite gibt nur den aktuellen weet aus, sonst nichts
Moin,
den Wert würd ich dann ganz einfach mit GetFileFromURL auslesen:
{GetFileFromURL("https://www.netzfrequenz.info/json/act.json")}
Gruß
Thomas
Wo muss ich das eintragen? :-[
Oder als Regex einfach "(\d+\.\d+)" ....
ZitatWo muss ich das eintragen? :-[
Ein at würde sich bspw. anbieten den Wert zu jeder vollen Stunde auszulesen und in ein Reading zu schreiben :
defmod at_example at +*01:00:00 {fhem('setreading $SELF act '.GetFileFromURL("https://www.netzfrequenz.info/json/act.json"))}
attr at_example alignTime 00:00
Zitat von: Wernieman am 03 Januar 2024, 11:54:22Oder als Regex einfach "(\d+\.\d+)" ....
Irgendwie bin ich zu doof dazu...
Welche Info fehlt Dir den noch?
Zitat von: Wernieman am 04 Januar 2024, 08:29:41Welche Info fehlt Dir den noch?
Nun gut, jetzt hab ich es hinbekommen das überhaput etwas passiert :)
Jedoch wird mir immer nur 1.1 angezeigt.
define NF HTTPMOD https://www.netzfrequenz.info/json/act.json 10
setuuid NF 657403cc-f33f-f9d3-eb58-2d05a4bdb8f9d5a0
attr NF alias NF
attr NF enableControlSet 1
attr NF enableCookies 1
attr NF enforceGoodReadingNames 1
attr NF handleRedirects 1
attr NF reading1Name Netzfrequenz
attr NF reading1Regex (\d+\.\d+)
attr NF requestHeader Content-Type: application/json
Stimmt .. er guckt in den direkten HTTP Stream und findet natürlich den 1.1 bei "http/1.1" ....
Must Du tiefer gucken ...
Ich denke, das wird nicht so einfach funktionieren, weil im httpbody tatsächlich nur der numerische Wert ohne jegliches html darum steht.
Übrigens, bei den Attributen gilt nicht die Regel "viel hilft viel", bis auf die beiden reading-bezogenen Attribute kannst Du alle anderen weglassen.
defmod nf HTTPMOD https://www.netzfrequenz.info/json/act.json
attr nf reading01Regex ([45].\.\d+)
Das funktioniert bei mir problemlos.
Alternativ funktioniert auch die regex
(\d\d\.\d+)
Zitat von: betateilchen am 04 Januar 2024, 09:31:23Nimm mal als regex ([456].\.\d+)
Funktioniert, perfekt! Danke an alle!
Jetzt kommt das nächste Projekt. Pegelstände...
https://hochwasserportal.nrw/lanuv/webpublic/#/overview/Wasserstand/station/28595/Neuhaus1/Wasserstand?period=P1D
Hat Jemand jemand eine Idee?😁
Zitat von: Michi1978 am 04 Januar 2024, 09:39:39Jetzt kommt das nächste Projekt. Pegelstände...
...
Hat Jemand jemand eine Idee?
Ja: Benutze die Suchfunktion hier im Forum.
Zu Pegelständen gibt es schon mehrere Threads.
Zitat von: betateilchen am 04 Januar 2024, 10:02:10Zitat von: Michi1978 am 04 Januar 2024, 09:39:39Jetzt kommt das nächste Projekt. Pegelstände...
...
Hat Jemand jemand eine Idee?
Ja: Benutze die Suchfunktion hier im Forum.
Zu Pegelständen gibt es schon mehrere Threads.
Die Suchfunktion hatte ich schon benutzt. Leider nichts Passendes gefunden.
Würde halt gerne alle 15 Min den aktuellen Pegelstand des Flusses hier in der Nähe abfragen, der geht uns gerade so richtig auf die nerven und wenn der Pegel auf eine bestimmte Höhe ansteigt drückt das Wasser wieder in den Keller... Würde mich daher gerne von FHEM "wecken" lassen wenn das der Fall ist :) Mit der Nachricht das bekomme ich selbst hin. Nur mit diesem regEx Kram halt voll nicht...
regex ist da nicht das Problem:
timestamp[\s\S]+>(\d+,\d+)
Das Problem ist, dass sich die Webseite in HTTPMOD nicht ohne weiteres aufrufen lässt, das ist die erhaltene Antwort:
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>400 Bad Request</title>
</head><body>
<h1>Bad Request</h1>
<p>Your browser sent a request that this server could not understand.<br />
</p>
</body></html>
oder das hier:
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="utf-8" />
<meta
name="viewport"
content="width=device-width, initial-scale=1.0, viewport-fit=cover"
/>
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="default" />
<meta name="apple-mobile-web-app-title" content="WISKI-WEB" />
<link
rel="preload"
href="./icons/ki/css/Kisterswater.woff2"
as="font"
type="font/woff2"
crossorigin
/>
<link rel="stylesheet" href="./icons/kim/css/external-min.css" />
<link rel="apple-touch-icon" href="icon-192x192.png" />
<meta name="Description" content="KISTERS WISKI-WEB" />
<link rel="stylesheet" href="./icons/ki/css/external-min.css" />
<script>
sessionStorage.setItem('i18nextLng', 'de');
</script>
<base href="." />
<title>LANUV - Hydrologische Messdaten Online</title>
<script type="module" crossorigin src="./assets/index.39912ae5.js"></script>
<link rel="modulepreload" href="./assets/highcharts.01248728.js">
<link rel="modulepreload" href="./assets/vendor.88af4a85.js">
<link rel="stylesheet" href="./assets/vendor.44fa1caf.css">
<link rel="stylesheet" href="./assets/index.6f242378.css">
</head>
<body>
<h1 style="display: none">Hydrologische Messdaten Online</h1>
<head style="display: none"></head>
<main></main>
<ww-app-index></ww-app-index>
</body>
</html>
Jedenfalls nix, aus dem man irgendwelche Werte extrahieren kann.
Und bei pegelonline (was viel einfacher abzufragen wäre) ist der Pegel nicht drin, weil da keine Schiffe fahren.
Zitat von: betateilchen am 04 Januar 2024, 10:47:30regex ist da nicht das Problem:
timestamp[\s\S]+>(\d+,\d+)
Das Problem ist, dass sich die Webseite in HTTPMOD nicht ohne weiteres aufrufen lässt, das ist die erhaltene Antwort:
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>400 Bad Request</title>
</head><body>
<h1>Bad Request</h1>
<p>Your browser sent a request that this server could not understand.<br />
</p>
</body></html>
oder das hier:
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="utf-8" />
<meta
name="viewport"
content="width=device-width, initial-scale=1.0, viewport-fit=cover"
/>
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="default" />
<meta name="apple-mobile-web-app-title" content="WISKI-WEB" />
<link
rel="preload"
href="./icons/ki/css/Kisterswater.woff2"
as="font"
type="font/woff2"
crossorigin
/>
<link rel="stylesheet" href="./icons/kim/css/external-min.css" />
<link rel="apple-touch-icon" href="icon-192x192.png" />
<meta name="Description" content="KISTERS WISKI-WEB" />
<link rel="stylesheet" href="./icons/ki/css/external-min.css" />
<script>
sessionStorage.setItem('i18nextLng', 'de');
</script>
<base href="." />
<title>LANUV - Hydrologische Messdaten Online</title>
<script type="module" crossorigin src="./assets/index.39912ae5.js"></script>
<link rel="modulepreload" href="./assets/highcharts.01248728.js">
<link rel="modulepreload" href="./assets/vendor.88af4a85.js">
<link rel="stylesheet" href="./assets/vendor.44fa1caf.css">
<link rel="stylesheet" href="./assets/index.6f242378.css">
</head>
<body>
<h1 style="display: none">Hydrologische Messdaten Online</h1>
<head style="display: none"></head>
<main></main>
<ww-app-index></ww-app-index>
</body>
</html>
::EDIT::
Habe gerade gesehen das du deinen letzten Beitrag nochmal geändert hast, der Code war da eben noch nicht drin... Daher nochmal meine nachfrage ;)
::EDIT::
Jedenfalls nix, aus dem man irgendwelche Werte extrahieren kann.
Und bei pegelonline (was viel einfacher abzufragen wäre) ist der Pegel nicht drin, weil da keine Schiffe fahren.
Genau, Pegelonline hatte ich auch anhand des Beitrages hier im Forum erst im Sinn, da merkte ich auch das die Lippe hier nicht aufgeführt ist.
Kann man hier nichts mit anfangen?
defmod nh HTTPMOD https://earlyfloodalert.com/de/river.php?river=Lippe
attr nh reading01Regex 2781730000200.*\n.*\n..<td>(.*).cm
OT:
Da merkt man den "Profi" .. bin nicht drauf gekommen, den ersten RegEx einfach auf die erste Ziffer (4 oder 5) trickern zu lassen .. dabei völlig Logisch
Da es hier um Werte von einer Webseite auslesen geht hätte ich mal eine Frage
Wie bist du überhaupt auf https://www.netzfrequenz.info/json/act.json gekommen? ALso vorallem das mit dem /json/act.json
Hintergrund ist, ich würde gern von: https://kachelmannwetter.com/de/messwerte/dresden/sonnenstunden/20240105-0600z.html ,die Sonnenstunden der Station auslesen (kleiner grauer Kreis unter A13, über Hellerau, obere Mitte von Karte.
Besten Dank
Zitat von: betateilchen am 04 Januar 2024, 14:38:36defmod nh HTTPMOD https://earlyfloodalert.com/de/river.php?river=Lippe
attr nh reading01Regex 2781730000200.*\n.*\n..<td>(.*).cm
Wow, das funktioniert prächtig! Kann ich dir irgendwie einen Kaffe spendieren? :)
Zitat von: Schlafsack am 05 Januar 2024, 09:54:49Hintergrund ist, ich würde gern von: https://kachelmannwetter.com/de/messwerte/dresden/sonnenstunden/20240105-0600z.html ,die Sonnenstunden der Station auslesen (kleiner grauer Kreis unter A13, über Hellerau, obere Mitte von Karte.
Bei Kachelmann ist das doch völlig simpel, da gibt es eine API nebst Beschreibung der API.
ich glaube ich brauche ne Brille? oder noch einen etwas genaueren Denkanstoß wie ich das in HTTPMOD einbinde.
Habe bischen was kopiert, da fehlt aber leider noch was ???
defmod HTTP_Kachelmann HTTPMOD https://kachelmannwetter.com/de/messwerte/dresden/sonnenstunden.html 10
attr HTTP_Kachelmann enableControlSet 1
attr HTTP_Kachelmann enableCookies 1
attr HTTP_Kachelmann get03Name Sonnenscheindauer
attr HTTP_Kachelmann get03Poll 1
attr HTTP_Kachelmann get03URL https://kachelmannwetter.com/de/messwerte/dresden/sonnenstunden.html
attr HTTP_Kachelmann handleRedirects 1
attr HTTP_Kachelmann timeout 7
- das Kapern von fremden Threads für eigene Probleme ist hier eher unüblich.
- Mach für Deine Fragen bitte einen eigenen Thread auf.
- Eröffne Deinen Thread bitte im richtigen Unterforum zu HTTPMOD, nicht in den Anfängerfragen.
https://forum.fhem.de/index.php?topic=13092.0
Das hier kommt übrigens in HTTPMOD an, wenn Du Deine URL aufrufst:
<HTML><HEAD>
<TITLE>Access Denied</TITLE>
</HEAD><BODY>
<H1>Access Denied</H1>
You don't have permission to access "http://kachelmannwetter.com/de/messwerte/dresden/sonnenstunden.html" on this server.<P>
Reference #18.5e62645f.1704456030.39c2714d
</BODY>
</HTML>
Deshalb mein Hinweis auf die offizielle API von Kachelmann, die genau für solche Datenabfragen geschaffen wurde.
Wird gemacht Großer Meister.
PS: Deinen Hinweis habe ich verfolgt und mich dort sogar registriert. Nur leider ist das mit der API nicht ganz kostenlos, deshalb wollte ich es so versuchen.
Besten Dank trotzdem