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

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

Vorheriges Thema - Nächstes Thema

Zeitisen

Zitat von: marvin78 am 20 April 2021, 08:25:20
Sieht nicht nach so viel Arbeit aus.
Leider doch. Wenn man nur die Zahl der auszuführenden Aktionen anschaut, ist es nicht so viel.
Aber der Teufel steckt im Detail. Ich habe es bis jetzt noch nicht geschafft, das ganze überhaupt zu kompilieren.
Der Raspi 3B+ hängt sich nach einigen Minuten immer auf. Auch Optionen bei make wie -j -l 4 ändern daran nichts.
Das ist besonders ärgerlich, wenn darauf auch pivccu läuft und der verwendetet DRAP nicht mal mehr lokale wired Verknüpfungen bedient.
Dann kann man nicht mal mehr das Licht einschalten.
Vielleicht hat noch jemand Tipps. Eine schnelle Aktion wird es auf jeden Fall nicht.

marvin78

Ok. Dabei kann ich nicht viel helfen. Dafür müsstest du dich in den einschlägigen Foren umschauen. Sorry.

Zeitisen

So, jetzt habe ich es geschafft, python3.8.4 zu kompilieren

Abhilfe: alles anhalten, was nicht unbedingt gebraucht wird, z.B. php Dienste entfernen, fhem anhalten und killen.
Aber bei der installation des fhem moduls kam folgender Fehler:
Calling /usr/bin/perl ./contrib/commandref_join.pl -noWarnings, this may take a while
2021.04.27 20:22:05 1 : *** EN FHEM/70_STV.pm: ignoring text due to DOS encoding



marvin78

#18
70_STV hat aber nichts mit diesem Modul zu tun.

Das RCT Modul hat kein DOS encoding.

Aber der Fehler ohnehin beeinträchtigt nicht die Funktion des Moduls. Es sagt nur aus, dass ein Teil der Doku nicht erzeugt werden konnte. Allerdings nicht von diesem Modul.

Zeitisen

Oh, Entschuldigung, da habe ich mich vertan. Ich bin heute wohl nicht mehr ganz frisch.

Jetzt habe ich noch eine Frage:
Wie installiere ich Data::dumper oder stelle fest, ob es installiert ist?
Ich bekomme auch eine Fehlermeldung im Log:
2021.04.27 21:06:16 1: Timeout for RCT::DoGetData reached, terminated process 11149
Bei dem Versuch, das Modul aufzurufen, kommt keine Antwort vom Server.

Zeitisen

#20
Data::Dumper und json habe ich installiert.

sudo cpanm Data::Dumper
libjson-perl aus den Paketquellen war bereits installiert.

Aber immer noch keine Werte.2021.04.27 22:10:33 4 : RCT (Photovoltaik) - Start ProcessGetData
2021.04.27 22:10:33 4 : RCT (Photovoltaik) - ProcessGetData
2021.04.27 22:11:43 1 : Timeout for RCT::DoGetData reached, terminated process 17381
2021.04.27 22:12:19 4 : RCT (Photovoltaik) - Start ProcessGetData
2021.04.27 22:12:19 4 : RCT (Photovoltaik) - ProcessGetData

marvin78

Bitte immer ein list posten. Hast du den Host (Wechselrichter) korrekt angegeben? Dreh mal verbose auf 5 hoch und schau ins Log.

Zeitisen

Verbose ist auf 5 und alles, was kommt ist oben zu sehen, also start, get, timeout

Der wechselrichter ist korrekt und auch per ping zu erreichen

marvin78

Bitte ein list. Immer ein list

Funktioniert der Client auf der Konsole?

Zeitisen

#24
Was meinst du mit list? Die Logausgabe von fhem?

Mit client meinst du den rctclient? Wie ruft man den auf der console auf? Ich hatte jetzt eigentlich nicht vor, mir noch diese Ebene reinzuziehen.

Im fhem log kommt jetzt folgendes (gekürzt):

2021.04.28 09:17:41 5: RCT (Photovoltaik) - DoGetData: {}
2021.04.28 09:17:41 4: RCT (Photovoltaik) - Start ProcessGetData
2021.04.28 09:17:41 4: RCT (Photovoltaik) - ProcessGetData
2021.04.28 09:17:51 4: RCT (Photovoltaik) - Start DoGetData
2021.04.28 09:17:51 4: RCT (Photovoltaik) - DoGetData with host 192.168.195.80 and port 8899
2021.04.28 09:17:51 5: RCT (Photovoltaik) - JSON: {
"values":[
{
"name": "battery.soc",
"reading": "battery_soc",
"unit": "",
"factor": 100,
"intervalFactor": 1,
"format": "%.1f"
},

...


2021.04.28 09:17:51 5: RCT (Photovoltaik) - Array: $VAR1 = {
'unit' => '',
'format' => '%.1f',
'name' => 'battery.soc',
'reading' => 'battery_soc',
'intervalFactor' => 1,
'factor' => 100 };
...

2021.04.28 09:17:52 5: RCT (Photovoltaik) - RAW result:
2021.04.28 09:17:52 5: RCT (Photovoltaik) - RAW result:
2021.04.28 09:17:52 5: RCT (Photovoltaik) - RAW result:
2021.04.28 09:17:53 5: RCT (Photovoltaik) - RAW result:
2021.04.28 09:17:53 5: RCT (Photovoltaik) - RAW result:
2021.04.28 09:17:53 5: RCT (Photovoltaik) - RAW result:
2021.04.28 09:17:54 5: RCT (Photovoltaik) - RAW result:
2021.04.28 09:17:54 5: RCT (Photovoltaik) - RAW result:
2021.04.28 09:17:54 5: RCT (Photovoltaik) - RAW result:
....
2021.04.28 09:18:51 1: Timeout for RCT::DoGetData reached, terminated process 16301
2021.04.28 09:19:03 4: RCT (Photovoltaik) - Start DoGetData
2021.04.28 09:19:03 4: RCT (Photovoltaik) - DoGetData with host 192.168.195.80 and port 8899
2021.04.28 09:19:03 5: RCT (Photovoltaik) - JSON: {

....

marvin78

Bitte die FHEM Grundlagen lernen, bevor du mit so etwas hier loslegst.

Ein list von RCT Device:

list <RCT-device>

Ergebnis hier posten.

Bitte RCT-Client auf der Konsole testen. Läuft er da nicht, kann er hier nicht laufen. Ein Test ist nicht schwer:

rctclient read-value --host <host> --name battery.soc

Zeitisen

Ich arbeite jetzt schon seit fast 10 Jahren mit fhem, aber den Befehle list habe ich noch nie gebraucht.

Ich arbeite in anderen Umgebungen durchaus auf der Konsole, aber normalerweise nicht in fhem.

Internals:
   DEF        192.168.195.80
   FUUID      60885a05-f33f-ecac-30db-9b00e4f522bcedf3
   HOST       192.168.195.80
   INTERVAL   10
   MID        da39a3ee5e6dfjkdl348d434b0d3255bfef95601890afd80709
   NAME       Photovoltaik
   NOTIFYDEV  global
   NR         947
   NTFY_ORDER 14-Photovoltaik
   PORT       8899
   STATE      active
   TYPE       RCT
   VERSION    0.2.6
   READINGS:
     2021-04-28 09:10:45   state           active
   helper:
     RETRY_COUNT 27
     counter    49
     RUNNING_PID:
       abortFn    RCT::ProcessAbortedGetData
       arg        Photovoltaik
       bc_pid     686
       finishFn   RCT::ProcessGetData
       fn         RCT::DoGetData
       pid        29644
       telnet     telnetForBlockingFn_1619557037_127.0.0.1_38248
       timeout    60
       abortArg:
Attributes:
   icon       sani_solar
   room       Aussen
   values     {
    "values":[
    {
      "name": "battery.soc",
      "reading": "battery_soc",
      "unit": "",
      "factor": 100,
      "intervalFactor": 1,
      "format": "%.1f"
    },
    {
      "name": "battery.soh",
      "reading": "battery_soh",
      "unit": "",
      "factor": 100,
      "intervalFactor": 10,
      "format": "%.0f"
    },
    {
      "name": "battery.soc_target",
      "reading": "battery_soc_target",
      "unit": "",
      "factor": 100,
      "intervalFactor": 5,
      "format": "%.1f"
    },
    {
      "name": "battery.soc_target_low",
      "reading": "battery_soc_target_low",
      "unit": "",
      "factor": 100,
      "intervalFactor": 11,
      "format": "%.1f"
    },
    {
      "name": "battery.temperature",
      "reading": "battery_temperature",
      "unit": "",
      "factor": 1,
      "intervalFactor": 5,
      "format": "%.1f"
    },
    {
      "name": "battery.efficiency",
      "reading": "battery_efficiency",
      "unit": "",
      "factor": 1,
      "intervalFactor": 10,
      "format": "%.2f"
    },
    {
      "name": "battery.used_energy",
      "reading": "battery_used_energy",
      "unit": "",
      "factor": 1,
      "intervalFactor": 10,
      "format": "%.0f"
    },
    {
      "name": "g_sync.p_ac_sum",
      "reading": "power_real",
      "unit": "",
      "factor": 1,
      "intervalFactor": 1,
      "format": "%.0f"
    },
    {
      "name": "g_sync.p_acc_lp",
      "reading": "power_battery",
      "unit": "",
      "factor": 1,
      "intervalFactor": 1,
      "format": "%.0f"
    },
    {
      "name": "g_sync.p_ac_grid_sum_lp",
      "reading": "power_grid_total",
      "unit": "",
      "factor": 1,
      "intervalFactor": 1,
      "format": "%.0f"
    },
    {
      "name": "g_sync.p_ac_sum_lp",
      "reading": "power_ac",
      "unit": "",
      "factor": 1,
      "intervalFactor": 1,
      "format": "%.0f"
    },
    {
      "name": "g_sync.q_ac_sum_lp",
      "reading": "power_reactive",
      "unit": "",
      "factor": 1,
      "intervalFactor": 1,
      "format": "%.0f"
    },
    {
      "name": "g_sync.p_ac[0]",
      "reading": "power_ac1",
      "unit": "",
      "factor": 1,
      "intervalFactor": 1,
      "format": "%.0f"
    },
    {
      "name": "g_sync.p_ac[1]",
      "reading": "power_ac2",
      "unit": "",
      "factor": 1,
      "intervalFactor": 1,
      "format": "%.0f"
    },
    {
      "name": "g_sync.p_ac[2]",
      "reading": "power_ac3",
      "unit": "",
      "factor": 1,
      "intervalFactor": 1,
      "format": "%.0f"
    },
    {
      "name": "dc_conv.dc_conv_struct[0].p_dc_lp",
      "reading": "power_solarA",
      "unit": "",
      "factor": 1,
      "intervalFactor": 1,
      "format": "%.0f"
    },
    {
      "name": "dc_conv.dc_conv_struct[1].p_dc_lp",
      "reading": "power_solarB",
      "unit": "",
      "factor": 1,
      "intervalFactor": 1,
      "format": "%.0f"
    },
    {
      "name": "g_sync.p_ac_load_sum_lp",
      "reading": "power_household_external",
      "unit": "",
      "factor": 1,
      "intervalFactor": 1,
      "format": "%.0f"
    },
    {
      "name": "energy.e_ac_day",
      "reading": "energy_day",
      "unit": "",
      "factor": 1,
      "intervalFactor": 2,
      "format": "%.0f"
    },
    {
      "name": "energy.e_grid_feed_day",
      "reading": "energy_day_grid_feed_in",
      "unit": "",
      "factor": 1,
      "intervalFactor": 2,
      "format": "%.0f"
    },
    {
      "name": "energy.e_load_day",
      "reading": "energy_day_household",
      "unit": "",
      "factor": 1,
      "intervalFactor": 2,
      "format": "%.0f"
    },
    {
      "name": "energy.e_ext_day_sum",
      "reading": "energy_day_external",
      "unit": "",
      "factor": 1,
      "intervalFactor": 2,
      "format": "%.0f"
    },
    {
      "name": "energy.e_grid_load_day",
      "reading": "energy_day_grid_load",
      "unit": "",
      "factor": 1,
      "intervalFactor": 2,
      "format": "%.0f"
    },
    {
      "name": "energy.e_dc_day[0]",
      "reading": "energy_day_solarA",
      "unit": "",
      "factor": 1,
      "intervalFactor": 2,
      "format": "%.0f"
    },
    {
      "name": "energy.e_dc_day[1]",
      "reading": "energy_day_solarB",
      "unit": "",
      "factor": 1,
      "intervalFactor": 2,
      "format": "%.0f"
    },
    {
      "name": "energy.e_ac_month",
      "reading": "energy_month",
      "unit": "",
      "factor": 1,
      "intervalFactor": 2,
      "format": "%.0f"
    },
    {
      "name": "energy.e_grid_feed_month",
      "reading": "energy_month_grid_feed_in",
      "unit": "",
      "factor": 1,
      "intervalFactor": 2,
      "format": "%.0f"
    },
    {
      "name": "energy.e_load_month",
      "reading": "energy_month_household",
      "unit": "",
      "factor": 1,
      "intervalFactor": 2,
      "format": "%.0f"
    },
    {
      "name": "energy.e_ext_month_sum",
      "reading": "energy_month_external",
      "unit": "",
      "factor": 1,
      "intervalFactor": 2,
      "format": "%.0f"
    },
    {
      "name": "energy.e_grid_load_month",
      "reading": "energy_month_grid_load",
      "unit": "",
      "factor": 1,
      "intervalFactor": 2,
      "format": "%.0f"
    },
    {
      "name": "energy.e_dc_month[0]",
      "reading": "energy_month_solarA",
      "unit": "",
      "factor": 1,
      "intervalFactor": 2,
      "format": "%.0f"
    },
    {
      "name": "energy.e_dc_month[1]",
      "reading": "energy_month_solarB",
      "unit": "",
      "factor": 1,
      "intervalFactor": 2,
      "format": "%.0f"
    },
    {
      "name": "energy.e_ac_year",
      "reading": "energy_year",
      "unit": "",
      "factor": 1,
      "intervalFactor": 2,
      "format": "%.0f"
    },
    {
      "name": "energy.e_grid_feed_year",
      "reading": "energy_year_grid_feed_in",
      "unit": "",
      "factor": 1,
      "intervalFactor": 2,
      "format": "%.0f"
    },
    {
      "name": "energy.e_load_year",
      "reading": "energy_year_household",
      "unit": "",
      "factor": 1,
      "intervalFactor": 2,
      "format": "%.0f"
    },
    {
      "name": "energy.e_ext_year_sum",
      "reading": "energy_year_external",
      "unit": "",
      "factor": 1,
      "intervalFactor": 2,
      "format": "%.0f"
    },
    {
      "name": "energy.e_grid_load_year",
      "reading": "energy_year_grid_load",
      "unit": "",
      "factor": 1,
      "intervalFactor": 2,
      "format": "%.0f"
    },
    {
      "name": "energy.e_dc_year[0]",
      "reading": "energy_year_solarA",
      "unit": "",
      "factor": 1,
      "intervalFactor": 2,
      "format": "%.0f"
    },
    {
      "name": "energy.e_dc_year[1]",
      "reading": "energy_year_solarB",
      "unit": "",
      "factor": 1,
      "intervalFactor": 2,
      "format": "%.0f"
    },
    {
      "name": "energy.e_ac_total",
      "reading": "energy_total",
      "unit": "",
      "factor": 1,
      "intervalFactor": 2,
      "format": "%.0f"
    },
    {
      "name": "energy.e_grid_feed_total",
      "reading": "energy_total_grid_feed_in",
      "unit": "",
      "factor": 1,
      "intervalFactor": 2,
      "format": "%.0f"
    },
    {
      "name": "energy.e_load_total",
      "reading": "energy_total_household",
      "unit": "",
      "factor": 1,
      "intervalFactor": 2,
      "format": "%.0f"
    },
    {
      "name": "energy.e_ext_total_sum",
      "reading": "energy_total_external",
      "unit": "",
      "factor": 1,
      "intervalFactor": 2,
      "format": "%.0f"
    },
    {
      "name": "energy.e_grid_load_total",
      "reading": "energy_total_grid_load",
      "unit": "",
      "factor": 1,
      "intervalFactor": 2,
      "format": "%.0f"
    },
    {
      "name": "energy.e_dc_total[0]",
      "reading": "energy_total_solarA",
      "unit": "",
      "factor": 1,
      "intervalFactor": 2,
      "format": "%.0f"
    },
    {
      "name": "energy.e_dc_total[1]",
      "reading": "energy_total_solarB",
      "unit": "",
      "factor": 1,
      "intervalFactor": 2,
      "format": "%.0f"
    }
  ]
}
   verbose    5



pi@datalogger ~ $ rctclient read-value --host 192.168.195.80 --name battery.soc
"click" not found, commands unavailable


Da scheint etwas bei der Installation von rctclient noch nicht vollständig zu sein.
Click ist wohl ein Python Modul, das fehlt. muss ich noch nachbohren
.


marvin78

#27
Hast du das hier alles gemacht?

https://pypi.org/project/rctclient/

Ach und im Forum sollte immer ein list gepostet werden. Bitte die angepinnten Beiträge im Anfängerforum lesen. Die sind nicht neu ;)

Zeitisen

nachdem ich click mit
pip3 install click
pip3 install -U rctclient[cli]
installiert habe, funktioniert der Aufruf von

pi@datalogger ~ $ rctclient read-value --host 192.168.195.80 --name battery.soc
0.22657763957977295



und ich bekomme auch readings zurück.
Herzlichen Dank für deine Bemühungen und die schnellen Antworten!

marvin78