Wenn dies dein erster Besuch hier ist, lies bitte zuerst die Hilfe - Häufig gestellte Fragen durch. Du musst dich vermutlich registrieren, bevor du Beiträge verfassen kannst. Klicke oben auf 'Registrieren', um den Registrierungsprozess zu starten. Du kannst auch jetzt schon Beiträge lesen. Suche dir einfach das Forum aus, das dich am meisten interessiert.
Spontan würde ich mal sagen, nutze das http bindig, um die Werte abzufragen. Dannach z.B. eine xsl transform, um den entsprechenden Wert aus dem Dokument zu parsen. Es gibt einige Beispile für Wetterdaten hierzu. So wird z.B. bei die Temp. von einer Website abgefragt.
Photon gibt es ja nicht mehr und eine neue Lösung wäre sicher nicht schlecht - z.B. den Wecheslrichter direkt abfragen etc.
Die Frage ist ja, willst Du genau einen Wert abfragen (bzw. genau zwei Werte in zwei items einlesen) oder ganze Datenreihen?
Für letzteres wäre ein php-Script wohl besser, welches die Daten vom Logger holt und dann z.B. in eine Datenbank ablegt. Wenn man das geforderte Format einhält, könnte man es mit etwas Gefummel vermutlich auch schaffen, dass diese Daten anschließend in openHAB sichtbar werden. Ich lese so täglich die Logs aus meinem Fronius Wechselrichter aus - grafische Aufbereitung habe ich allerdings noch nicht implementiert
Für die erste Variante müsste man halt schauen, wie die Daten angeboten werden und entsprechend parsen.
Also mir würden mal die 2 Werte Temperatur und Strahlung reichen. Hab leider mit dem Http-Binding keinen Plan wie ich da an die Daten kommen soll.
Kann mir da jemand aufs Pferd helfen ;-)
Da wäre die ausgelieferte Seite natürlich hilfreicher als ein Snapshot der Browseransicht
Grundsätzlich ist das aber kein Hexenwerk. Da beide Werte aus demselben Code extrahiert werden sollen, bietet es sich an, die Seite zu cachen, also in der openhab.cfg beim http-Binding zwei Zeilen einzufügen: (aus dem Kopf, bitte das Beispiel in der openhab.cfg anschauen)
Number Photon_Temp {http="<[photon:30000:REGEX(.*temp>(.*)<blah.*)]"}
Number Photon_Power {http="<[photon:30000:REGEX(.*feed>(.*)<blah.*)]"}
Wobei die Zeichen vor dem Ausdruck (.*) die letzten eindeutigen Zeichen vor dem eigentlichen Wert sind und die dahinter eben entsprechend der Teil nach dem Wert. REGEX übergibt also an das Item das, was innerhalb der inneren Klammern steht und lässt alles andere weg.
REGEX ergänzt den Ausdruck in den Klammern und arbeitet dann mit diesem Ausdruck: ^Ausdruck_in_der_Klammer$ was bedeutet, dass der Ausdruck in der äußeren Klammer immer auf den Gesamten Cache-Inhalt matchen muss. Ansonsten verhält es sich weitgehend wie andere Regex-Implementationen, Spezialitäten wie Selbstreferenzierung und dergleichen sollte man nicht als gegeben voraussetzen
Die Kunst besteht darin, die einleitenden und ausleitenden Zeichen zu finden und passend im REGEX-Ausdruck einzubauen...
Ist immer eine Herausforderung aber für Feed-in würde ich damit anfangen:
Code:
REGEX(.*Feed-in.*value=.([0-9]*.[0-9][0-9]).*)
Er soll also im cache eine Stelle suchen, die mit Feed-in anfängt und mit einer Zahl beliebiger Länge mit zwei Nachkommastellen aufhört. (da bleibt nur eine Teil-Zeile übrig, in der der nächste Suchbegriff eindeutig ist) In diesem Teilstring soll er den Teilstring nach value= in den State des Items übernehmen, und zwar ohne die " (deshalb der . vor der Klammer - der steht für ein beliebiges Zeichen).
Falls das nicht auf Anhieb funktioniert, kannst Du das Ziel-Item erstmal als String definieren um sicher zu sehen, was er denn als Match liefert. dann bietet es sich an, den Ausdruck innerhalb der inneren Klammern so allgemein wie möglich zu formulieren, also (.*) (eine beliebig lange Zeichenkette aus beliebigen Zeichen) und dafür noch einen Teilstring nach der Zahl zu nutzen, z.B. das Wort Consumption aus der nächsten Zeile.
Für die Temperatur verfährst Du entsprechend, da ist es dann aber nur eine Nachkommastelle. Aufpassen muss man natürlich bei Zahlen, die auch negativ werden können, dann muss man das vielleicht vorkommende Minuszeichen mit in den Klammern integrieren, mit -? ( Minus darf null- oder einmal vorkommen), sonst matchen negative Zahlen nicht oder werden vielleicht ohne Vorzeichen übernommen.
muss doch zurückrudern ;-( es wird mir das Datum angezeigt. <tr><td>Date, Time:</td><td><input type="text" size="18" value="24.03.2016, 23:16:41" readonly></td> </tr> Dachte es sind 2,4 ° ..... Beim Rumprobieren hab ich dann nur noch die Datalogger Version raus bekommen.... <tr><td>Datalogger Version:</td><td><input type="text" size="18" value="2.4.019.005" readonly></td> </tr>
Laut http://www.regextester.com sollte die Obige Zeile super funktionieren.... Aber Ich bekomme einfach nicht die Temperatur übertragen.
Wir verarbeiten personenbezogene Daten über die Nutzer unserer Website mithilfe von Cookies und anderen Technologien, um unsere Dienste bereitzustellen. Weitere Informationen findest Du in unserer Datenschutzerklärung.
Indem Du unten auf "ICH stimme zu" klickst, stimmst Du unserer Datenschutzerklärung und unseren persönlichen Datenverarbeitungs- und Cookie-Praktiken zu, wie darin beschrieben. Du erkennst außerdem an, dass dieses Forum möglicherweise außerhalb Deines Landes gehostet wird und bist damit einverstanden, dass Deine Daten in dem Land, in dem dieses Forum gehostet wird, gesammelt, gespeichert und verarbeitet werden.
Kommentar