Neues Modul: 37_RCT für RCT-Power Systeme

Begonnen von marvin78, 08 April 2021, 21:00:24

Vorheriges Thema - Nächstes Thema

marvin78

Ich empfehle für RCT dieses python Modul von Dominik: https://forum.fhem.de/index.php/topic,126126.0.html

Das Modul ist performanter und basiert nicht auf der CLI. Man muss zudem keine Abhängigkeiten installieren (falls fhempy schon läuft).





Seit einiger Zeit werkelt hier ein RCT Wechselrichter mit Speicher. Basierend auf dem RCT Client habe ich ein kleines Modul gebaut, welches einige der wichtigsten Werte auslesen kann.

Das Modul kann noch nicht viel - nur ein paar Live- und Statistik-Werte auslesen. Das Modul ist quick&dirty ohne großes Fehlermanagement und nur kurz getestet. Es hat aber einige hilfreiche Logzeilen und sollte nicht blockierend sein. RCT Client CLI (Link oben) wird benötigt, außerdem werden die folgenden Perl Module benötigt:

Data::Dumper, JSON

Installation:

update all https://raw.githubusercontent.com/marvin78/FHEM-RCT/master/controls_RCT.txt

Definition:

define <NAME> RCT <HOST-IP> [<PORT>]

Intervall ist 10 Sekunden. Das kann per Attribut "pollInterval" angepasst werden.

Es gibt sicher noch einige Fehler im Modul. Ggf. kann ja mal jemand auf Herz und Nieren testen. Support gibt es leider nicht in Echtzeit.


marvin78

Kleines Update mit ein paar Batteriewerten zusätzlich.

marvin78

Im git liegt nun die Version 0.1.2. Die auszulesenden Values sind in ein Attribut gewandert, welches ein JSON enthält das angepasst werden kann. Somit kann jeder die Werte und entsprechenden Readings eintragen die er auswerten möchte. Auch kann man nun entscheiden, wie oft ein Wert eigentlich ausgelesen werden sollte, welche Einheit der Wert haben soll (noch ohne Funktion) und mit welchem Faktor der Wert ggf. direkt multipliziert werden soll. Es gibt entsprechende Vorgabewerte im Attribut values. Die Registerwerte kann man dieser Aufstellung entnehmen: https://rctclient.readthedocs.io/en/latest/registry.htm

Das JSON sieht so aus (Ausschnitt):

{
    "values":[
    {
      "name": "battery.soc", # Wert aus Registry
      "reading": "battery_soc", # gewünschter Readingname
      "unit": "%", # Einheit (noch ohne Funktion)
      "factor": 100, # Faktor für den gelesenen Wert
      "intervalFactor": 1 # wie oft soll der Wert gelesen werden (hier jedes mal) / 10 würde bedeuten, jedes 10. mal.
    },
    ...
    ]
  }

marvin78

#3
In Version 0.1.5 kann man nun auch das Zahlenformat direkt bestimmen. Es gibt nun im values-Attribut format für ein sprintf Format. Lässt man es weg, wird 1:1 aus dem Client übernommen.

{
    "values":[
    {
      "name": "battery.soc", # Wert aus Registry
      "reading": "battery_soc", # gewünschter Readingname
      "unit": "%", # Einheit (noch ohne Funktion)
      "factor": 100, # Faktor für den gelesenen Wert
      "intervalFactor": 1, # wie oft soll der Wert gelesen werden (hier jedes mal) / 10 würde bedeuten, jedes 10. mal.
      "format": "%.1f"
    },
    ...
    ]
  }

marvin78

#4
Version 0.2.0 schreibt die Einheit (unit) ins Reading, wenn im JSON vorhanden.

Standard ist ohne Einheit. Wenn ihr also Einheiten wünscht, müsst ihr Sie ins Attribut values einpflegen. Dabei dann bitte den Faktor beachten und in die Registry schauen.

thm2014

Danke erstmal für die Mühen. Die Verbindung steht auf Port 8899 und der STATE ist active. Die zwei genannten Perl-Module sind auch installiert. Wie kann ich denn jetzt auf die Werte zugreifen?

marvin78

Wenn die Daten nicht von alleine kommen:

Ist der RCT Client auf localhost installiert?

Ein list vom device wäre gut.

Dann mach mal verbose 5 und schaue ins Log.

thm2014

Danke, ich habe falsch gelesen, ich habe den RCT Client gar nicht installiert, sondern habe die IP des RCTPowers angegeben, da ja ein Telnet dorthin auf Port 8899 funktioniert. Werde meine Installation anpassen, dann wird es vermutlich einfach gehen.

marvin78

#8
Die IP des Inverters angeben ist schon richtig. Aber ohne den lokal installierten RCT Client funktioniert das Modul hier nicht. Es baut darauf auf. Im Grunde nutzt es nur die CLI des Clients um die Daten, frei konfigurierbar, ins FHEM zu bringen.

Bitte ein wenig mit dem Client beschäftigen. Oben gibt es einen Link.

thm2014

Okay verstanden. Muss ich mir wohl in Ruhe anschauen. Die Installation mag scheinbar meine Pyton 3 Version nicht, weder pip noch pip3 führen zum Erfolg.

pip install -U rctclient
Traceback (most recent call last):
  File "/usr/local/bin/pip", line 6, in <module>
    from pip._internal.cli.main import main
ImportError: No module named 'pip._internal'

marvin78

Ich weiß nichts über dein System. Aber ggf. zunächst Python 3 aktualisieren...

Zeitisen

Ich habe das gleiche Problem.
Raspian hat aktuell Python 3.5 und rctclient benötigt 3.6
Da muss man wohl zuerst manuell auf eine höhere Python Version aktualisieren. Ist nach Doku im Netz wohl etwas Arbeit:
https://stackoverflow.com/questions/64718274/how-to-update-python-in-raspberry-pi

marvin78


peter-s

Moin zusammen,

ich habe gestern meine PV-Anlage von RCT-Power in Betrieb genommen und wollte natürlich die Daten unbedingt in FTUI anzeigen.
Die Integration mit dem Modul 37_RCT an sich hat eigentlich fast sofort und recht problemlos geklappt, vielen Dank für die tolle Arbeit an marvin78!!!

Das eigentliche Problem war die Installation des rctclient - diese sollte unbedingt als "root" erfolgen, dann klappt es auch mit dem Aufruf aus FHEM heraus.

Für die Visualisierung der Langzeit-Statistiken werde ich mir wohl irgendwann influxdb/Grafana antun müssen...

Nochmal danke für das Modul!

LG Peter

marvin78

Ich bin aktuell ziemlich begeistert von dem RCT System. RCT Client ist etwas hakelig. Leider gibt es auch Probleme, wenn man mit mehreren Clients gleichzeitig auf die serielle Schnittstelle zugreift (die RCT-Power App gehört wohl auch dazu). Aber im Grunde funktioniert das hier bei mir bisher prima. Ich habe mir einen Quick&veryDirty Block für Smartvisu gebaut (basierend auf einem Widget aus dem KNX User-Forum). So muss es nun erstmal laufen, bis ich wieder mehr Zeit habe.