98_myStrom.pm - myStrom WLAN Energy Control Switch

Begonnen von arallon, 11 August 2015, 23:46:25

Vorheriges Thema - Nächstes Thema

arallon

hab mal 3 Log einträge eingefügt. Da wird die wirkliche Antwort vom Server mal geloggt. Und der JSON String den ich versuche zu erstellen.
Version hier angehängt.

chaot4ever

#61
Benötigst du noch spezielle verbuse Einträge?
Hier mal die ersten Log-Einträge:
Zitat2018.03.24 12:38:17 1: {
   "power":   2.181167,
   "relay":   true
}
2018.03.24 12:38:18 1: {
   "power":   4.343541,
   "relay":   true
}
2018.03.24 12:38:20 1: <html><head><title>Error</title></head><body><h1>500 Internal Server Error</h1></body></html>
2018.03.24 12:38:20 1: { "<html><head><title>Error</title></head><body><h1>500": Internal }
2018.03.24 12:38:20 3: Error while getting data from myStrom adapter: The answer does not contain valid JSON from address 192.168.2.116

Die ersten 2 sind die V1 und der letzte die V2 Version.

eppi

Kann ich so bestätigen, bei mir siehts genauso aus mit dem V2 Adapter:
2018.03.25 07:52:51 3: Error while getting data from myStrom adapter: The answer does not contain valid JSON from address 192.168.2.128
2018.03.25 07:52:51 1: { "<html><head><title>Error</title></head><body><h1>500": Internal }
2018.03.25 07:52:51 1: <html><head><title>Error</title></head><body><h1>500 Internal Server Error</h1></body></html>

arallon

Seltsam dass da ein Internal Server Error kommt. Wenn ihr die URLs im Browser aufruft kommt ja eine Antwort. Das ist natürlich schwierig nachzustellen.
Muss mir wohl mal eine Rev2 besorgen.

chaot4ever

Habe sogar meinen NUC upgedated und JSON kontrolliert, ist auf dem neuesten Stand!

arallon

Es sieht ja so aus als ob der myStrom Switch gar nicht korrekt antwortetauf den Call aus dem Modul.

arallon

Wird bei revision 2 evtl via https umgeleitet ? Wäre evtl noch etwas woran es zumindest vom Code her liegen könnte. Wobei der Call dann evtl auch umgeleitet werden sollte.

eppi

Zitat von: arallon am 25 März 2018, 16:44:06
Wird bei revision 2 evtl via https umgeleitet ?
Hilft dir das?
{
  "log": {
    "version": "1.1",
    "creator": {
      "name": "Firefox",
      "version": "59.0.1"
    },
    "browser": {
      "name": "Firefox",
      "version": "59.0.1"
    },
    "pages": [
      {
        "startedDateTime": "2018-03-25T19:35:14.029+02:00",
        "id": "page_1",
        "title": "myStrom",
        "pageTimings": {
          "onContentLoad": -1,
          "onLoad": -1
        }
      }
    ],
    "entries": [
      {
        "pageref": "page_1",
        "startedDateTime": "2018-03-25T19:35:14.029+02:00",
        "time": null,
        "request": {
          "bodySize": 0,
          "method": "GET",
          "url": "http://192.168.2.128/report",
          "httpVersion": "HTTP/1.1",
          "headers": [
            {
              "name": "Accept",
              "value": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
            },
            {
              "name": "Accept-Encoding",
              "value": "gzip, deflate"
            },
            {
              "name": "Accept-Language",
              "value": "de,en-US;q=0.7,en;q=0.3"
            },
            {
              "name": "Connection",
              "value": "keep-alive"
            },
            {
              "name": "Host",
              "value": "192.168.2.128"
            },
            {
              "name": "Upgrade-Insecure-Requests",
              "value": "1"
            },
            {
              "name": "User-Agent",
              "value": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:59.0) Gecko/20100101 Firefox/59.0"
            }
          ],
          "cookies": [],
          "queryString": [],
          "headersSize": 338
        },
        "response": {
          "status": 200,
          "statusText": "OK",
          "httpVersion": "HTTP/1.1",
          "headers": [
            {
              "name": "Cache-Control",
              "value": "no-store, no-cache"
            },
            {
              "name": "Connection",
              "value": "close"
            },
            {
              "name": "Content-Length",
              "value": "32"
            },
            {
              "name": "Content-Type",
              "value": "application/json"
            },
            {
              "name": "Pragma",
              "value": "no-cache"
            }
          ],
          "cookies": [],
          "content": {
            "mimeType": "application/vnd.mozilla.json.view",
            "size": 32,
            "encoding": "base64",
            "text": "ewoJInBvd2VyIjoJMCwKCSJyZWxheSI6CWZhbHNlCn0="
          },
          "redirectURL": "",
          "headersSize": 143,
          "bodySize": 175
        },
        "cache": {},
        "timings": {
          "blocked": 0,
          "dns": 0,
          "connect": 0,
          "ssl": 0,
          "send": 0,
          "wait": 32,
          "receive": 0
        },
        "serverIPAddress": "192.168.2.128",
        "connection": "80"
      },
      {
        "pageref": "page_1",
        "startedDateTime": "2018-03-25T19:35:52.842+02:00",
        "time": null,
        "request": {
          "bodySize": 0,
          "method": "GET",
          "url": "http://192.168.2.128/report",
          "httpVersion": "HTTP/1.1",
          "headers": [
            {
              "name": "Accept",
              "value": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
            },
            {
              "name": "Accept-Encoding",
              "value": "gzip, deflate"
            },
            {
              "name": "Accept-Language",
              "value": "de,en-US;q=0.7,en;q=0.3"
            },
            {
              "name": "Cache-Control",
              "value": "no-cache"
            },
            {
              "name": "Connection",
              "value": "keep-alive"
            },
            {
              "name": "Host",
              "value": "192.168.2.128"
            },
            {
              "name": "Pragma",
              "value": "no-cache"
            },
            {
              "name": "Upgrade-Insecure-Requests",
              "value": "1"
            },
            {
              "name": "User-Agent",
              "value": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:59.0) Gecko/20100101 Firefox/59.0"
            }
          ],
          "cookies": [],
          "queryString": [],
          "headersSize": 381
        },
        "response": {
          "status": 200,
          "statusText": "OK",
          "httpVersion": "HTTP/1.1",
          "headers": [
            {
              "name": "Cache-Control",
              "value": "no-store, no-cache"
            },
            {
              "name": "Connection",
              "value": "close"
            },
            {
              "name": "Content-Length",
              "value": "32"
            },
            {
              "name": "Content-Type",
              "value": "application/json"
            },
            {
              "name": "Pragma",
              "value": "no-cache"
            }
          ],
          "cookies": [],
          "content": {
            "mimeType": "application/json",
            "size": 32,
            "text": "{\n\t\"power\":\t0,\n\t\"relay\":\tfalse\n}"
          },
          "redirectURL": "",
          "headersSize": 143,
          "bodySize": 175
        },
        "cache": {},
        "timings": {
          "blocked": 0,
          "dns": 0,
          "connect": 0,
          "ssl": 0,
          "send": 0,
          "wait": 62,
          "receive": 0
        },
        "serverIPAddress": "192.168.2.128",
        "connection": "80"
      },
      {
        "pageref": "page_1",
        "startedDateTime": "2018-03-25T19:37:25.827+02:00",
        "time": null,
        "request": {
          "bodySize": 0,
          "method": "GET",
          "url": "http://192.168.2.128/report",
          "httpVersion": "HTTP/1.1",
          "headers": [
            {
              "name": "Accept",
              "value": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
            },
            {
              "name": "Accept-Encoding",
              "value": "gzip, deflate"
            },
            {
              "name": "Accept-Language",
              "value": "de,en-US;q=0.7,en;q=0.3"
            },
            {
              "name": "Cache-Control",
              "value": "no-cache"
            },
            {
              "name": "Connection",
              "value": "keep-alive"
            },
            {
              "name": "Host",
              "value": "192.168.2.128"
            },
            {
              "name": "Pragma",
              "value": "no-cache"
            },
            {
              "name": "Upgrade-Insecure-Requests",
              "value": "1"
            },
            {
              "name": "User-Agent",
              "value": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:59.0) Gecko/20100101 Firefox/59.0"
            }
          ],
          "cookies": [],
          "queryString": [],
          "headersSize": 381
        },
        "response": {
          "status": 200,
          "statusText": "OK",
          "httpVersion": "HTTP/1.1",
          "headers": [
            {
              "name": "Cache-Control",
              "value": "no-store, no-cache"
            },
            {
              "name": "Connection",
              "value": "close"
            },
            {
              "name": "Content-Length",
              "value": "32"
            },
            {
              "name": "Content-Type",
              "value": "application/json"
            },
            {
              "name": "Pragma",
              "value": "no-cache"
            }
          ],
          "cookies": [],
          "content": {
            "mimeType": "application/json",
            "size": 32,
            "text": "{\n\t\"power\":\t0,\n\t\"relay\":\tfalse\n}"
          },
          "redirectURL": "",
          "headersSize": 143,
          "bodySize": 175
        },
        "cache": {},
        "timings": {
          "blocked": 0,
          "dns": 0,
          "connect": 0,
          "ssl": 0,
          "send": 0,
          "wait": 31,
          "receive": 0
        },
        "serverIPAddress": "192.168.2.128",
        "connection": "80"
      }
    ]
  }
}


arallon

hier sehe ich noch, dass httpversion 1.1 bei der Abfrage genutzt wird. Der Aufruf im Modul nutzt standardmässig 1.0. Das könnte man noch versuchen.
Ansonsten muss ich wohl mal so ein Teil kaufen.

arallon

Also ich habe mal noch die httpversion auf 1.1 gesetzt. aber ich kann mir nicht vorstellen, dass das einen unterschied macht.
Seltsam wieso das einen 500 Error wirft. Wenn es im Browser problemlos klappt...

Gibt es die korrekte antwort wenn ihr:
{GetFileFromURL("http://192.168.x.x/info")} im FHEM command line im GUI ausführt?

eppi

Zitat von: arallon am 26 März 2018, 19:49:35
{GetFileFromURL("http://192.168.x.x/info")} im FHEM command line im GUI ausführt?
Ich kann gerade nicht testen, bin erst am Wochenende wieder zu Hause. Ich hoffe, dass chaot4ever das machen kann..
Gruss Eppi

chaot4ever

#71
Hallo arallon
Habs getestet: Dir Readings kommen bei V1 und V2 nun perfekt an und erneuern sich, die internals sind ebenfalls korrekt. Das log zeigt nun keinen Fehler mehr, aber fehlende Einträge:
Zitat2018.03.27 09:01:46 1: {
   "version":   "3.60",
   "mac":   "xxxxxxxxxxxx",
   "ssid":   "RCB",
   "ip":   "",
   "mask":   "",
   "gateway":   "",
   "dns":   "",
   "static":   false,
   "connected":   true
}
Internals:
ZitatDEF 192.168.2.117 60
INTERVAL 60
NAME Test
NR 3222
STATE on
TYPE myStrom
ip 192.168.2.117
mac xx:xx:xx:xx:xx:xx
mode DHCP
ssid RCB
swversion 3.60
aber leider lässt sich die V2 nicht schalten, die V1 hingegen schon.
Dein Befehl{GetFileFromURL("http://192.168.x.x/info")} ergibt leider: 500 Internal Server Error

arallon

Ok perfekt. Wir kommen weiter :)

Dann ist die Ursache für die Fehler der call mit httpversion 1.0. Dann ist auch klar wieso das schalten nicht funktioniert. Das ist noch ein Call der auf 1.0 basiert.

Ich würde meine aktuellere Version nun aktualisieren auf die anderen Calls, dann sollte auch das schalten endlich funktionieren für eure V2. Hoffe ich zumindest.

Neuere Version wäre noch wie folgt angepasst:

Attribute für tarifDay, tarifNight, TarifNightInterval
Readings umbenannt: totalConsumption, totalConsumptionDay, totalConsumptionNight, totalCost

Total in Watt habe ich entfernt, das war hauptsächlich zum testen. Sind nun alles kW Angaben. Man kann nun einen Tarif angeben, dann werden die Kosten berechnet, gibt man noch einen Nachttarif und den Interval an, dann kann man Tag/Nachtstrom Tarife abbilden. Bei der Kostenberechnung wird das dann berücksichtigt. totalCost Readings wird gelöscht, sofern keine Tarife mehr vorhanden sind. Die Kosten werden immer neu berechnet, eine Änderung des Tarifs wirkt sich also auf auch rückwirkend auf den Zähler aus.
Interval wird im Format wie für disableForIntervals angegeben z.b "22:00-24:00 00:00-05:00" würde heissen von 22 Uhr bis 5 Uhr morgens wäre Nachtstrom Tarif aktiv.

die alten Readings müsste man manuell löschen oder das Device neu anlegen.

Readings für totalLastDay, totalLastWeek, totalActualDay, totalLastMonth sind die nächsten Erweiterungen, wenn die aktuelle Version dann stabil ist für die Version2 der Switches.

Danke für das Testen auf jeden Fall von meiner Seite.

Hänge im Laufe des Abends dann eine neue Version an Beitrag 1.

chaot4ever

#73
Bitte bei den neuen Versionen die Abfrage der Temperatur integrieren!
(http://192.168.x.x/temp)
Rohdaten:
Zitat{
   "measured":   42.937500,
   "compensation":   28.150000,
   "compensated":   14.787500
}

arallon

Stimmt das hatte ich auch noch vor. Dafür habe ich ein Attribut eingefügt tempInterval.

Vorgesehen wäre es, wenn das gesetzt ist entsprechend in dem Interval die temperatur Info abzufragen. Ich denke das muss evtl nicht so oft geschehen wie den Strom messen. Zudem müsste ich so keine Unterscheidung Rev.1 / 2 einbauen (wäre wohl nur anhand der Firmware Version möglich, aber das wäre recht unsicher).

Muss schauen ob ich das heute eingebaut bekomme, so das es auch verlässlich läuft mit den internen Timern. Aktuell bin ich guter Dinge das es klappen könnte :)