[gelöst] Anfängerprobleme mit HTTPMOD

Begonnen von WhyTea, 26 Oktober 2018, 09:16:38

Vorheriges Thema - Nächstes Thema

WhyTea

Fehler beim Laden der folgenden Adresse: Could not load the source for http://192.168.6.101/api/v1/getPlantOverview.
[Exception... "Component returned failure code: 0x80470002 (NS_BASE_STREAM_CLOSED) [nsIInputStream.available]"  nsresult: "0x80470002 (NS_BASE_STREAM_CLOSED)"  location: "JS frame :: resource://devtools/shared/base-loader.js -> resource://devtools/shared/DevToolsUtils.js :: onResponse :: line 569"  data: no]
Stack: onResponse@resource://devtools/shared/base-loader.js -> resource://devtools/shared/DevToolsUtils.js:569:25
onStopRequest@resource://gre/modules/NetUtil.jsm:126:17
Line: 569, column: 0

CoolTux

Habe noch was gefunden

https://community.zipato.com/topic/local-api_2

http://<ip>:8080/v2

Bekommst über die Adresse Daten?
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

WhyTea

http://192.168.6.101:8080/v2 kommt nix

http://192.168.6.101/v2 kommt eine leere Seite
Fehler beim Laden der folgenden Adresse: Could not load the source for http://192.168.6.101/v2.
[Exception... "Component returned failure code: 0x80470002 (NS_BASE_STREAM_CLOSED) [nsIInputStream.available]"  nsresult: "0x80470002 (NS_BASE_STREAM_CLOSED)"  location: "JS frame :: resource://devtools/shared/base-loader.js -> resource://devtools/shared/DevToolsUtils.js :: onResponse :: line 569"  data: no]
Stack: onResponse@resource://devtools/shared/base-loader.js -> resource://devtools/shared/DevToolsUtils.js:569:25
onStopRequest@resource://gre/modules/NetUtil.jsm:126:17
Line: 569, column: 0

CoolTux

Schade. Hätte da jetzt was erwartet. Dann bin ich auch erstmal ratlos.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

WhyTea

Aber ich kann mir doch den Body laden und parsen oder nicht?

CoolTux

#20
Bringt dir ja nichts. In einem Body stehen glauben keine Nutzdaten
Das ist Unsinn. Ich dachte da an den Header. Sorry
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

WhyTea

Der Body:
1
1
EAB961723105
QN6PAX3SS4VHW8AX
M11
17A31-727R+17829-719R
16:53 26/10/2018
0
1
BS15006011720112
68
0.60
OK
Error

CoolTux

Und? Was ist das? Kannst du die Daten denn irgendwie zu ordnen?
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

WhyTea

Ja kann ich.
Zeile 10: Seriennummer
Zeile 11: aktuelle Leistung
Zeile 12: produzierte kwh des Tages
Zeile 13: Erreichbarkeit

Der Rest ist uninteressant.

CoolTux

OK. Und das kommt auch so in HTTPMOD an?
Dann kannst ja RegEx machen.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

WhyTea

Naja, mit dem Attribut showBody ist es als Wert in dem Internal httpbody.
Da muss ich mir dann die Werte raussuchen und in Userreadings oder dummies schreiben.
Aber im Log steht natürlich noch:
Solaranlage: Read response to update didn't match any Reading

Und die Anlage schaltet ab wenn kein Strom mehr produziert wird und daher erscheinen dann Timeouts im Log.
Solaranlage: Read callback: Error: connect to http://192.168.6.101:80 timed out
Dazu müsste ich mir dann ein Script einfallen lassen was z.B. einen Helligkeitssensor abfragt und entsprechend die Abfrage startet bzw. stoppt.

WhyTea

Aber für heute ist erstmal schluß. Es ist zu dunkel.  ;D

CoolTux

Du musst natürlich die Attribute setzen. Also das Reading Attribut und die zum Reading passende RegEx als Attribut.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

WhyTea

#28
Ok ich verstehe aber ich finde keine passende Regex.

1
1
EAB961723105
QN6PAX3SS4VHW8AX
M11
17A31-727R+17829-719R
13:37 28/10/2018
0
1
BS15006011720112
155
0.82
OK
Error


Das ist der aktuelle Body. Es sind immer 14 Zeilen. Interessant für mich sind die Zeilen 10,11,12.
Der Inhalt von Zeile 10 ist konstant. Das ist die Seriennummer.
Der Inhalt von Zeile 11 ist variabel. Das ist die aktuelle Leistung iin Watt.
Der Inhalt von Zeile 12 ist variabel. Das ist die bisher am Tag erzeugte Leistung in kwh.

Nach meinem verständnis müsste ich jetzt in den Body in einzelne Zeilen zerlegen und die ganannten Zeilen in Readings schrieben.

Dafür habe ich drei Attribute hinzugefügt
attr Solaranlage reading01Name SNR
attr Solaranlage reading02Name Watt
attr Solaranlage reading03Name kwh


Aber an Regex verzweifel ich gerade.  :-\

WhyTea

So ich hab es.  ;D

defmod Solaranlage HTTPMOD http://192.168.6.101/home.cgi 900
attr Solaranlage userattr reading01Name reading01Regex reading02Name reading02Regex reading03Name reading03Regex
attr Solaranlage enableControlSet 1
attr Solaranlage enableCookies 1
attr Solaranlage httpVersion 1.1
attr Solaranlage reading01Name SNR
attr Solaranlage reading01Regex (?:[^\r\n]*(?:\r|\rn|\n)){27}([^\r\n]*)(?:\r|\rn|\n).*
attr Solaranlage reading02Name Watt
attr Solaranlage reading02Regex (?:[^\r\n]*(?:\r|\rn|\n)){28}([^\r\n]*)(?:\r|\rn|\n).*
attr Solaranlage reading03Name kwh
attr Solaranlage reading03Regex (?:[^\r\n]*(?:\r|\rn|\n)){29}([^\r\n]*)(?:\r|\rn|\n).*
attr Solaranlage showBody 1

setstate Solaranlage 2018-10-29 11:02:57 SNR BS15006011720112
setstate Solaranlage 2018-10-29 11:02:57 Watt 62
setstate Solaranlage 2018-10-29 11:02:57 kwh 0.15


So hat mein
Device Solaranlage drei Readings SNR, Watt und kwh. :-)