Fenecon FEMS REST API (gelöst)

Begonnen von smart.builder, 30 Januar 2020, 10:54:09

Vorheriges Thema - Nächstes Thema

smart.builder

Hallo Zusammen,

ich möchte gerne Daten meiner Solaranlage aus FEMS (Fenecon Energie Management System) auslesen. Hierfür ist eine REST API vorgesehen. FEMS basiert auf OpenEMS. Es existiert eine Dokumentation bezüglich der Schnittstelle.
https://openems.github.io/openems.io/openems/latest/edge/controller.html#_rest_api_controller
https://community.openems.io/t/daten-per-ipsymcon-auslesen/59/2

Im Browser mit einem REST Plugin (z.B. RESTED Client für Firefox) klappt es wunderbar. Es wird Basic auth verwendet, wobei die Antwort im JSON-Format kommt. Siehe Anhang. Somit funktioniert die API wie erwartet.

Mit dem HTTPMOD bekomme ich jedoch einen "Authentification failed" Fehler bzw. "HTTP/1.1 500 Server Error"

Meine Einstellungen sind wie folgt:

Attributes:
enableControlSet 1
enableCookies 1
enforceGoodReadingNames 1
get01Data {"get" :{"value"}}
get01Name Version
get01URL http://<MeineIP>:8084/rest/channel/_meta/Version
getHeader1 Authorization: user user
getHeader2 Content-Type: application/json


Mit den Anmeldedaten in der URL sieht es auch nicht besser aus. (http://user:user@<meineip>:8084/rest/channel/_meta/Version)

Ich konnte sehen, dass das RESTED Plugin im Browser folgenden Header generiert:

Host: <MeineIP>:8084
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:72.0) Gecko/20100101 Firefox/72.0
Accept: */*
Accept-Language: de,en-US;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
Authorization: Basic dXNlcjp1c2Vy
Connection: keep-alive
Cookie: token=4b1f1543-a812-4af2-b46f-11f54fc7766c


Leider hat es auch nichts gebracht den Header im HTTPMOD nachzubilden. Es kommt die gleiche Meldung mit Authentification failed.
Wahrscheinlich ist es ganz trivial. Ich bin um jeden Tipp dankbar!

smart.builder

#1
Hab den Fehler gefunden. Durch die Verwendung des Attributes
get01Data {"get" :{"value"}}
wird nicht ein GET sondern ein POST-Befehl gesendet. Bei der REST API funktioniert das Lesen der Daten nur mit einem GET.
Mein Fehler war, dass ich zur JSON Dekodierung das Wiki-Beispiel des HTTPMOD verwendet habe.

Die Lösung:


define Fenecon HTTPMOD none 60

attr Fenecon getHeader1 Content-Type: application/json
attr Fenecon getHeader2 Authorization: Basic dXNlcjp1c2Vy 


Zum automatischen Auslesen eines Parameters alle 5 Minuten, z.B. hier "die Version von FEMS", folgende Attribute hinzufügen:

attr Fenecon get01URL http://<IP>:8084/rest/channel/_meta/Version
attr Fenecon get01JSON value
attr Fenecon get01Name Version
attr Fenecon get01Poll 1
attr Fenecon get01PollDelay 300


Alle Parameter können nur einzeln ausgelesen werden, daher muss für jeden weiteren Parameter jeweils ein getXX-Satz nach dem obigen Beispiel angelegt werden.

Nachfolgend alle auslesbaren REST API Parameter. Sorry für das Format (Markdown). Bei Bedarf den Inhalt in einen Markdown-Editor z.B. Typora kopieren. Da sieht das Ganze besser aus!

_cycle/MeasuredCycleTime ... ms
_meta/Version ... string

**meter0/**   ...  hy-switch

**ess0/**   ...  battery

**charger0/**   ...  PV-Anlage

**_sum/** ...  General - All

| *Bezeichnung*                     | *Channel-ID*                                                 | Einheit        |
| --------------------------------- | ------------------------------------------------------------ | -------------- |
| **Batterie**                      | **ess0**                                                     |                |
| Status                            | State                                                        | 0 (Ok)         |
| Ladezustand                       | Soc                                                          | %              |
| On-Off-Grid-Status                | GridMode                                                     |                |
| Be-/Entladeleistung               | ActivePower                                                  | W              |
| Blindleistung                     | ReactivePower                                                | W              |
| Belade-Energie                    | ActiveChargeEnergy                                           | Wh             |
| Entlade-Energie                   | ActiveDischargeEnergy                                        | Wh             |
| Erlaubte Beladeleistung           | AllowedChargePower                                           | W              |
| Erlaubte Entladeleistung          | AllowedDischargePower                                        | W              |
|                                   | SetActivePowerEquals, SetActivePowerLessOrEquals, SetReactivePowerEquals, SetActivePowerGreaterOrEquals |                |
|                                   |                                                              |                |
|                                   |                                                              |                |
|                                   |                                                              |                |
| **PV-Anlage**                     | **charger0**                                                 |                |
| Status                            | State                                                        | 0 (Ok)         |
| Leistung                          | ActualPower                                                  | W              |
| Energie                           | ActualEnergy                                                 | Wh             |
| Maximale Leistung                 | MaxActualPower                                               | W              |
|                                   |                                                              |                |
|                                   |                                                              |                |
|                                   |                                                              |                |
|                                   |                                                              |                |
| **Hy-switch (Netzzähler)**        | **meter0**                                                   |                |
| Status                            | State                                                        | 0 (Ok)         |
| Frequenz                          | Frequency                                                    | mHz            |
| Netzbezugs-/Netzeinspeiseleistung | ActivePower, ActivePowerL1, ActivePowerL2, ActivePowerL3     | W              |
| Blindleistung                     | ReactivePower, ReactivePowerL1, ReactivePowerL2, ReactivePowerL3 | W              |
| Netzbezugsenergie                 | ActiveProductionEnergy                                       | Wh             |
| Netzeinspeiseenergie              | ActiveConsumptionEnergy                                      | Wh             |
| Spannung                          | Voltage, VoltageL1, VoltageL2, VoltageL3                     | mV             |
| Strom                             | Current, CurrentL1, CurrentL2, CurrentL3                     | mA             |
| Maximale, Minimale Leistung       | MaxActivePower, MinActivePower                               | W              |
|                                   |                                                              |                |
|                                   |                                                              |                |
|                                   |                                                              |                |
| **Allgemein**                     | **_sum**                                                     |                |
|                                   | ConsumptionActiveEnergy                                      | Wh             |
|                                   | ConsumptionActivePower, ConsumptionActivePowerL1, ConsumptionActivePowerL2,  ConsumptionActivePowerL3 | W              |
|                                   | ConsumptionMaxActivePower                                    | W              |
|                                   | EssActiveChargeEnergy, EssActiveDischargeEnergy              | Wh             |
|                                   | EssActivePower, EssActivePowerL1, EssActivePowerL2, EssActivePowerL3 | W              |
|                                   | EssCapacity                                                  | Wh             |
|                                   | EssMaxApparentPower                                          | VA             |
|                                   | EssSoc                                                       | %              |
|                                   | GridActivePower, GridActivePowerL1, GridActivePowerL2, GridActivePowerL3 | W              |
|                                   | GridBuyActiveEnergy                                          | Wh             |
|                                   | GridMaxActivePower, GridMinActivePower                       | W              |
|                                   | GridMode                                                     | -1 (Undefined) |
|                                   | GridSellActiveEnergy                                         | Wh             |
|                                   | ProductionAcActiveEnergy                                     | Wh             |
|                                   | State                                                        | 0 (Ok)         |
|                                   | ProductionAcActivePower, ProductionAcActivePowerL1,  ProductionAcActivePowerL2,  ProductionAcActivePowerL3 | W              |
|                                   | ProductionActiveEnergy                                       | Wh             |
|                                   | ProductionActivePower                                        | W              |
|                                   | ProductionDcActiveEnergy                                     | Wh             |
|                                   | ProductionDcActualPower                                      | W              |
|                                   | ProductionMaxAcActivePower                                   | W              |
|                                   | ProductionMaxActivePower                                     | W              |
|                                   | ProductionMaxDcActivePower                                   | W              |
|                                   |                                                              |                |
|                                   |                                                              |                |
|                                   |                                                              |                |
|                                   |                                                              |                |


eltakoalbert1

Hallo smart.builder
habe auch einen Feneco Home Speicher , möchte diesen in FHEM bringen .
Und wenn's geht einen Schalter haben der die Notstrom Reserve auf 100% setzt, wenn das E- Auto schnell geladen werden muss und der Akku nicht leergesaugt wird.
Habe leider keine Programmier- Kenntnisse und mache alles in copy and past und try and Error Prinzip.
Könntest du mir eine Anleitung geben wies geht.
MFG
Albert