Heizungsdaten aus Webseite auslesen via CCU3 ?

Allgemeines zur HomeMatic Haussteuerung

Moderator: Co-Administratoren

Exempla
Beiträge: 53
Registriert: 11.07.2020, 15:26
System: in Planung
Hat sich bedankt: 7 Mal

Heizungsdaten aus Webseite auslesen via CCU3 ?

Beitrag von Exempla » 29.12.2021, 14:14

Hallo zusammen,

ich möchte diverse Werte meiner Heizung (Tecalor Thz504) in Homematic auslesen. Offiziell muss ich dafür den Modbus meiner Heizung ansprechen.
Was doch relativ advanced ist. (vermutlich via CuxD und Redmatic, Registercodes....).

Frage: Meine Heizung hat ein einfaches Webinterface was auf einer Übersichtsseite alle Werte auflistet.
Aus der Powershell Welt kommend wäre es recht simpel die Webseite per Script aufzurufen und die Werte wegzuschreiben.

Ich würde aber gerne aus der CCU3 heraus die Webseite aufrufen und die entsprechenden Werte auslesen.

Hat jemand eine Idee wie man Webseiten aus Homematic heraus "crawled" und Daten davon wegschreibt?
Zwischenablage01.jpg

MichaelN
Beiträge: 9685
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 700 Mal
Danksagung erhalten: 1627 Mal

Re: Heizungsdaten aus Webseite auslesen via CCU3 ?

Beitrag von MichaelN » 29.12.2021, 14:37

Prinzipiell so ähnlich wie mit JSON payloads. Aber da die Website nicht strukturiert aufgebaut ist, wirst Du Dir da eine individuelle Lösung basteln müssen. Schau Dir mal die einfachen Skripte für Wetterdaten an. Da solltest Du Dir einiges von abschauen können:
viewtopic.php?f=18&t=17209&hilit=Wetter ... WeatherMap

Wenn Du neben der Website auch JSON oder XML Daten abrufen kannst, hättest Du es natürlich einfacher.
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

Fonzo
Beiträge: 6744
Registriert: 22.05.2012, 08:40
System: CCU
Hat sich bedankt: 25 Mal
Danksagung erhalten: 486 Mal

Re: Heizungsdaten aus Webseite auslesen via CCU3 ?

Beitrag von Fonzo » 29.12.2021, 16:01

Exempla hat geschrieben:
29.12.2021, 14:14
Offiziell muss ich dafür den Modbus meiner Heizung ansprechen.
Das hängt ja auch davon ab was Du genau bezweckst. Wenn Du auch was schalten willst und nicht nur lediglich auslesen ist der offizielle Weg über Modbus RTU auch der richtige. Wenn Du Werte lediglich auslesen willst, ist das halt die Frage ob Du das z.B. mit Homematic Script machen willst oder Javascript.

Die Werte lediglich auszulesen ohne die Möglichkeit zu haben etwas dann auch zu schalten, wozu Du wieder Modbus brauchst, ist aber auch nur bedingt zweckmäßig.

Wenn Du die Werte lediglich in einer Visualisierung anzeigen willst, schalten kannst Du auf dem Weg ja so oder so nichts, wäre es auch ausreichend einfach das als Webseite in einer Visualisierung einzubinden.

Benutzeravatar
Black
Beiträge: 5483
Registriert: 12.09.2015, 22:31
System: Alternative CCU (auf Basis OCCU)
Wohnort: Wegberg
Hat sich bedankt: 424 Mal
Danksagung erhalten: 1074 Mal
Kontaktdaten:

Re: Heizungsdaten aus Webseite auslesen via CCU3 ?

Beitrag von Black » 29.12.2021, 16:45

eine normale HTML-Seite Auswerten geht auch locker mit HMScript, dafür sind keine kostenpflichtigen Zusatzmodule nötig ^^ :wink:

Black
Wenn das Fernsehprogramm immer mehr durch nervende Werbung unterbrochen wird und der Radiomoderator nur noch Müll erzählt, ist es besser, die Zeit für sinnvolle Dinge zu nutzen -
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg

Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann

Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W

technical contribution against annoying advertising

Exempla
Beiträge: 53
Registriert: 11.07.2020, 15:26
System: in Planung
Hat sich bedankt: 7 Mal

Re: Heizungsdaten aus Webseite auslesen via CCU3 ?

Beitrag von Exempla » 29.12.2021, 20:30

Genau das habe ich mir gedacht @black

Hast du sowas schonmal gemacht? Oder hast mir einen Link wo jemand konkret Werte von HTML Seiten parst?

Benutzeravatar
Black
Beiträge: 5483
Registriert: 12.09.2015, 22:31
System: Alternative CCU (auf Basis OCCU)
Wohnort: Wegberg
Hat sich bedankt: 424 Mal
Danksagung erhalten: 1074 Mal
Kontaktdaten:

Re: Heizungsdaten aus Webseite auslesen via CCU3 ?

Beitrag von Black » 29.12.2021, 20:56

ist rangehen mit menschlicher interligenz:

den Quellcode der seite holen, sich im TextEditor ansehen,
finden der Stellen, die den Relevanten kontent enthalten, definieren der einfassenden Texte, substituieren des Kontent

in welcher Programmiersprache man das macht ist unerheblich

Black
Wenn das Fernsehprogramm immer mehr durch nervende Werbung unterbrochen wird und der Radiomoderator nur noch Müll erzählt, ist es besser, die Zeit für sinnvolle Dinge zu nutzen -
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg

Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann

Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W

technical contribution against annoying advertising

alchy
Beiträge: 10754
Registriert: 24.02.2011, 01:34
System: CCU
Hat sich bedankt: 65 Mal
Danksagung erhalten: 673 Mal

Re: Heizungsdaten aus Webseite auslesen via CCU3 ?

Beitrag von alchy » 29.12.2021, 22:12

Bin zwar nicht Black, aber ja - jegliches was man abrufen kann, kann man auch auswerten.

Nehmen wir mal ein Minibeispiel:

Ich hatte mal vor Jahren die Anfrage die Sonnenscheindauer von einer Website auszulesen.
Ist heute noch genauso online.
Website:

Code: Alles auswählen

http://www.sonnenscheindauer.de/index.php?breite=44.19
Sonnenscheindauer.jpg

Dreckige Schnelllösung:

Code: Alles auswählen

! Script zur Abfrage der Sonnenscheindauer auf www.sonnenscheindauer.de
! v0.1 (c) by Alchy
string url = "http://www.sonnenscheindauer.de/index.php?breite=44.19";
! +++++++++++ Finger weg ++++++++++++
string srueck;string error;
system.Exec("wget --no-check-certificate -O - '"#url#"'" , &srueck, &error);
if (!srueck == "") {
WriteLine("Abfrage in Ordnung \n");
string sOutput = srueck.StrValueByIndex("h2",1);
WriteLine(sOutput.Substr(2, sOutput.Length()-5));
}
oder auch mit CuxD

Code: Alles auswählen

string url = "http://www.sonnenscheindauer.de/index.php?breite=44.19";
dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State("wget -q -O - '"#url#"'");
dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
string srueck = dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();
if (!srueck == "") {
WriteLine("Abfrage in Ordnung \n");
string sOutput = srueck.StrValueByIndex("h2",1);
WriteLine(sOutput.Substr(2, sOutput.Length()-5));
}

ergibt dann:
Sonnenscheindauer_Ausgabe.jpg
Am einfachsten war es damals immer mit der JSON Ausgabe des Scriptexecuters von im Beispiel srueck anzufangen,
Sonnenscheindauer_JSON Ausgabe.jpg
um sich den Quellcode Code anzuschauen, da dieser gleiche CCU konform ist.
Und dann kommt das was Black mit menschlicher Intelligenz beschreibt.

Websiten abzufragen sollte man aber immer mit Bedacht einsetzen.

Alchy
Zuletzt geändert von alchy am 30.12.2021, 22:17, insgesamt 1-mal geändert.
Grund: Cuxd Version eingefügt

Blacklist................... almost full
Ignoranz ist die Summe aller Maßnahmen die man ergreift, um bestehende Tatsachen nicht sehen zu müssen.

© Sandra Pulsfort (*1974)

Lies bitte die Logik von WebUI Programmen und die Tipps und Tricks für Anfänger.

Wichtig auch CUxD ersetzt System.exec. Die HM Script Doku (Downloadart Skripte) hilft auch weiter.
Zum Testen von Scripten den >> HomeMatic Script Executor << von Anli benutzen.

Fonzo
Beiträge: 6744
Registriert: 22.05.2012, 08:40
System: CCU
Hat sich bedankt: 25 Mal
Danksagung erhalten: 486 Mal

Re: Heizungsdaten aus Webseite auslesen via CCU3 ?

Beitrag von Fonzo » 29.12.2021, 22:28

Black hat geschrieben:
29.12.2021, 20:56
in welcher Programmiersprache man das macht ist unerheblich
Das mag keine Rolle spielen wenn es vielleicht darum geht um überhaupt irgendwie zu einem Ergebnis zu kommen, es macht aber sehr wohl einen Unterschied wie schnell bzw. wie einfach man zu einem Ergebnis kommt. Da sind nun mal Sprachen wie Javascript oder auch PHP mit der DomDocument Klasse dafür prädestiniert einfach Daten aus dem HTML DOM herauszuholen.

Fertige Klassen für HTML DOM in Homematic Skript gibt es keine, das ist alles reine Handarbeit und eine Dokumentation findet man dazu eben auch keine im Gegensatz zu Javascript oder auch PHP oder anderen Sprachen.

Xel66
Beiträge: 14170
Registriert: 08.05.2013, 23:33
System: Alternative CCU (auf Basis OCCU)
Wohnort: Nordwürttemberg
Hat sich bedankt: 587 Mal
Danksagung erhalten: 1501 Mal

Re: Heizungsdaten aus Webseite auslesen via CCU3 ?

Beitrag von Xel66 » 30.12.2021, 09:47

Fonzo hat geschrieben:
29.12.2021, 22:28
...es macht aber sehr wohl einen Unterschied wie schnell bzw. wie einfach man zu einem Ergebnis kommt.
Mag ja alles sein. Aber es ist zielführend, dass man sicher zum Ziel kommt und nachvollziehen kann, was dort gerade abläuft und sich im Fehlerfall ggf. selbst helfen kann. Das ist bei Klassen und externen Tools nun mal nicht immer gegeben. Wo das hinführt, sehen wird gerade an der log4j-Problematik. Unabhängig davon halte ich die CCU auch für gänzlich ungeeignet, mit externen Servern ohne zusätzliche Maßnahmen zu kommunizieren. Dafür ist die Firmware einfach nicht vorgesehen und ein hängendes Script, welches auf Antworten von einem externen Server wartet, zwingt die ganze CCU in die Knie. Siehe auch Alchys roten Satz!

Daten, mit denen die CCU nichts anfangen kann bzw. sie nicht für ihre Automatisierungen nutzen kann, haben auf der CCU auch nichts verloren, bzw. genauer - muss diese nicht selbst ermitteln (Terminkalender oder Spritpreise etc.). Man kann aber durchaus Status und Inhalte von außen in der CCU setzen. Um irgendwelche Statistikdaten auf Visualisierungen einzublenden, stehen auf anderen Rechnern (z.B. Hostrechner für die Visu) umfangreiche Tools zur Verfügung. Dort sind auch definitiv elegantere Programmiersprachen verfügbar und es läuft kein embedded OS. Es gibt durchaus Gründe, Termine für bestimmte Dinge auszuwerten, um daraus Automatisierungen abzuleiten (z.B. Urlaub, Ferientermine, Feiertage für die Heizungssteuerung). Das ist grundsätzlich noch nachvollziehbar, aber was z.B. eine CCU mit Spritpreisen (und was nicht noch alles durch die CCU abgefragt wurde) anfangen soll, konnte noch niemand nachvollziehbar darlegen. Ganz ohne externe Kommunikation kommt man ja nicht aus. Push, Mail oder Smartspeaker-Ansagen kann man per fire & forget per URL abfeuern und muss nicht zwingend auf auszuwertende Rückantworten warten. Das ist eben bei "Datensammelscripts" anders und hier sollte man eben sparsam mit den Funktionalitäten umgehen.

Just my2ct.
Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch

Fonzo
Beiträge: 6744
Registriert: 22.05.2012, 08:40
System: CCU
Hat sich bedankt: 25 Mal
Danksagung erhalten: 486 Mal

Re: Heizungsdaten aus Webseite auslesen via CCU3 ?

Beitrag von Fonzo » 30.12.2021, 10:39

Xel66 hat geschrieben:
30.12.2021, 09:47
Aber es ist zielführend, dass man sicher zum Ziel kommt und nachvollziehen kann, was dort gerade abläuft und sich im Fehlerfall ggf. selbst helfen kann.
Was jeweils zielführend ist, muss ja jeder für sich selber beantworten. Für mich persönlich gilt, mir selber helfen kann ich nur, wenn es eine hinreichende ausführliche Dokumentation gibt und es ausreichend Beispiele gibt, an denen ich etwas nachvollziehen kann. Da Javascript aus dem Bereich HTML kommt und auch PHP die Standardsprache für Webserver ist, wird man da hinreichend Beispiele im ganzen Internet finden. Das ist Standard in Javascript im HTML DOM etwas über die Nodes zu finden und auch in PHP ist das mit der DomDocument ein absoluter Standard im Vorgehen.
Und zumindest Javascript liegt auf einer CCU3 vom Hersteller e-Q3 vorinstalliert vor oder man kann das mit Redmatic optional nochmals hinzufügen.
Xel66 hat geschrieben:
30.12.2021, 09:47
Dafür ist die Firmware einfach nicht vorgesehen und ein hängendes Script, welches auf Antworten von einem externen Server wartet, zwingt die ganze CCU in die Knie. Siehe auch Alchys roten Satz!
Ich habe mich selber mit Homematic Skript nie im Detail auseinander gesetzt, weil mir das auf den ersten Blick alles zu rudimentär war und zu begrenzt von den Möglichkeiten, außerdem liegt keine hinreichend detaillierte Dokumentation vom Hersteller e-Q3 selber vor. Gerade weil andere Sprachen ein Exception Handling besitzen, kann man dort eben mögliche Fehler mit z.B. try catch sauber abfangen.
Wenn man sich selber in die Tiefen von Homematic Skript stützen will, soll das jeder machen wie er will. Nur eine Seite anhand von Zeichenketten einzelnen per substr zu zerlegen, ist man eben viel länger beschäftigt um ans Ziel zu kommen, als einfach gleich auf das Element über die ID oder die Class mit entsprechenden Sprachen im DOM zu springen.
Ich sehe das zumindest so, dass die Homematic Script Sprache vom Hersteller selber für so Dinge auch nie vorgesehen war, nutzten kann man das dennoch, wenn man das denn will. Mit eben den Risiken, das wenn man nicht genau weis was man tut, die CCU danach nicht mehr stabil läuft, weil das Skript vielleicht sich irgendwo aufhängt.
Xel66 hat geschrieben:
30.12.2021, 09:47
Daten, mit denen die CCU nichts anfangen kann bzw. sie nicht für ihre Automatisierungen nutzen kann, haben auf der CCU auch nichts verloren
Daher ja meine Frage was mit den Daten dann eigentlich passieren soll. Schalten kann er die Heizung selber so oder so nur per Modbus. Also muss er schon einen konkreten Anwendungsfall haben, was dann eigentlich die CCU3 schalten soll mit den vorliegenden Daten der Heizung. Wenn es nur um das Anzeigen der Daten in einer möglichen Visualisierung geht, kann man sich im einfachsten Fall das auslesen ja auch sparen und einfach die komplette Webseite mit den Daten in eine Visualisierung einbinden.

Antworten

Zurück zu „HomeMatic allgemein“