Photovoltaik Eigenverbrauch,Bilanz,Prognose (Kostal Plenticore; KSEM; BYD HV)

Begonnen von ch.eick, 07 Oktober 2020, 16:09:12

Vorheriges Thema - Nächstes Thema

jnewton957

Zitat von: ch.eick am 20 Januar 2023, 17:53:51

Anscheinend verwenden hier im Thread alle anderen kein SQLite, also entweder MySQL oder MariaDB .
Nun bin ich mir nicht wirklich sicher, was das noch für weitere Konsquenzen haben wird.


STR_TO_DATE gibt es bei SQLite wohl auch nicht. Error: no such function: STR_TO_DATE

Schade. hatte die fhem.db eben nach Anleitung aufgesetzt. Und da stand "damals" eben sqlite.
FHEM6.2 auf Pi5
V 1.66 nanoCUL 433 (IT)
V 1.66 nanoCUL868 (HM)
sqlite3 LogDb
ELRO AB440, DECT200,  TFA30.3125, esp8266, HM, TabletUI, IR-Schreiblesekopf (Udo),tibber Pulse, Kostal Pico, cfos Wallbox, Modbus TCP

DS_Starter

Man kann durchaus mehrere DbLog Devices benutzen mit verschiedenen Datenbanksystemen.
Nur mal so als Hinweis.  ;)
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

ch.eick

Zitat von: jnewton957 am 20 Januar 2023, 20:23:33
STR_TO_DATE gibt es bei SQLite wohl auch nicht. Error: no such function: STR_TO_DATE

Schade. hatte die fhem.db eben nach Anleitung aufgesetzt. Und da stand "damals" eben sqlite.
SQLite hatte ich noch nie installiert, deshalb kann ich zur Kompatibilität leider nichts sagen.
Vom Namen her "Lite" hatte ich abgeleitet, dass es da sicherlich viele Einschränkungen geben würde. Deshalb hatte ich zuerst MariaDB 32 Bit installiert, aber das Docker Image wurde nie aktualisiert. Jetzt verwende ich das original MySQL 64 Bit als Docker Container und bekomme auch immer wieder Updates. Auch der Installationsaufwand ist um vieles geringer.
Im Wiki werde ich dann besser noch einen MySQL Hinweis rein schreiben.

Sorry für den extra Aufwand, aber ich schaffe es nicht alleine verschiedene Datenbanken zu unterstützen.

VG Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

ch.eick

Zitat von: jnewton957 am 20 Januar 2023, 20:23:33
Schade. hatte die fhem.db eben nach Anleitung aufgesetzt. Und da stand "damals" eben sqlite.
Ich habe gerade nochmal nachgeschaut, im FHEM Plenticore Wiki stand bisher ein MariaDB Docker Container bei 32 Bit. Ich habe es jetzt aktualisiert auf den Oracle MySQL Docker Container, da hat man halt alle aktuellen Möglichkeiten und regelmäßige Updates.

VG   Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

ch.eick

Hallo zusammen,
bevor ich jetzt die nächsten zei Wochen in der Versenkung verschwinde, habe ich hier nochmal was zum Spielen, da es ja geschneit hat.
Bei mir sind noch die halben Module mit Schnee bedeckt, da es bereits am Tauen ist.

Das kommt ins userReadings vom WR_1 und muss auf Eure Anlagen angepasst werden.
Denkt bitte an das Komma, wenn noch etwas ins userReadings kommt ;-)

string_1_covered_snow:SW_Total_DC_Energy_From_PV1.* {
   my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);; $year += 1900;; $mon += 1 ;;
   (($mon <= 2 or $mon >= 11) and
    ($hour >= 10 and $hour <= 16) and
    ReadingsVal($NAME,"P_DC1","10000") < 50 and
    ReadingsVal("Heizung","ambientTemperature",100) < 10)? "Schnee" : "frei";; },

string_2_covered_snow:SW_Total_DC_Energy_From_PV2.* {
   my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);; $year += 1900;; $mon += 1 ;;
   (($mon <= 2 or $mon >= 11) and
    ($hour >= 10 and $hour <= 16) and
    ReadingsVal($NAME,"P_DC2","10000") < 50 and
    ReadingsVal("Heizung","ambientTemperature",100) < 10)? "Schnee" : "frei";; }

## Falls Ihr auch noch mehr Strings habt, dann einfach noch mehr readings erzeugen. Bei mir wäre noch ein zweiter WR mit dem Trigger SW_Total_DC_Energy_From_PV4.* und SW_Total_DC_Energy_From_PV5.*, die dann aus dem WR_2 das reading P_DC* holen.

Angepasst werden müsste die Leistung 50 Watt des Strings, auf einen Wert wo Ihr sagt, dass er abgedeckt ist.
Und Ihr bräuchtet noch ein Device, aus dem Ihr die Außentemperatur bekommt. Bei mir ist das die Heizung (LWP) und da denke ich, dass über 10 ° wohl kein Schnee mehr vorhanden sein sollte.

Mein Gedanke ist, das dann später mit in die Solar_forecast() einfließen zu lassen.

EDIT: gerade ist es im Osten und Süden runter gerutscht und schon wird "frei" angezeigt :-)
   Nur der untere String im Westen zeigt noch "Schnee" an.

VG   Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

u.stemler

Hallo,
ich will von Plenticore den Tagesnetzverbrauch auslesen. Dies scheint nur über die API-Schnittstelle zu gehen. Bei den MODBUS-Readings habe ich nichts passendes gefunden.

https://wiki.fhem.de/wiki/Kostal_Plenticore_10_Plus
Diesen Betrag habe ich feinsäuberlich abgearbeitet.
ich scheitere bei KeyValue() Test
Wenn ich in FHEM in der Commandline folgenden aufruf eingebe:
{KeyValue("[read|store]","PW_WR_1_API_Xh@JJLjwcB","lentin9")}
kommt folgende Fehlermeldung:
Global symbol "@JJLjwcB" requires explicit package name (did you forget to declare "my @JJLjwcB"?) at (eval 74115) line 1.
Der Username (Master Key) lautet: Xh@JJLjwcB. Den kann ich auch nicht ändern. ich habe das Gefühl, dass es an dem @ hängt.
Hat jemand eine Idee für mich.
Oder gibt es noch einen ganz anderen Ansatz, über die API-Schnittstelle den Plenticore direkt auszulesen.

Danke. udo

ch.eick

Zitat von: u.stemler am 23 Januar 2023, 01:05:07
https://wiki.fhem.de/wiki/Kostal_Plenticore_10_Plus
Diesen Betrag habe ich feinsäuberlich abgearbeitet.
ich scheitere bei KeyValue() Test
Wenn ich in FHEM in der Commandline folgenden aufruf eingebe:
{KeyValue("[read|store]","PW_WR_1_API_Xh@JJLjwcB","lentin9")}
kommt folgende Fehlermeldung:
Global symbol "@JJLjwcB" requires explicit package name (did you forget to declare "my @JJLjwcB"?) at (eval 74115) line 1.
Der Username (Master Key) lautet: Xh@JJLjwcB. Den kann ich auch nicht ändern. ich habe das Gefühl, dass es an dem @ hängt.
Hat jemand eine Idee für mich.
Hallo Udo,
da hast Du einen falschen Syntax

{KeyValue("store","PW_WR_1_API_user","<passwort>")}
{KeyValue("read","PW_WR_1_API_user")}


"PW_WR_1_API_user" ist der feste Schlüssel, unterdem das Passwort abgelegt wird.
Das "<passwort> " ist das von Deinem Betreiberzugang und wird mit "" im Kommando angegeben, da es dort ein String ist.

Sollte es trotzdem noch mit Sonderzeichen ein Problem geben, dann kann man das im Plenticore auch ändern.
Es ist ein Unterschied zwischen dem Key auf dem Aufkleber und dem Passwort, wobei ich das bei mir gleich gesetzt habe, was auch der Default von Kostal ist.

VG   Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

u.stemler

Hallo Christian,
Danke für die schnelle Antwort.
Passwortübergabe hat funktioniert.

u.stemler

https://wiki.fhem.de/wiki/Kostal_Plenticore_10_Plus#Kostal_Plenticore_Plus_die_API

Wer kann mir weiterhelfen.
KeyValue funktioniert. Beim Test wird das Passwort korrekt zurück gegeben.

Beim Aufruf von get 01_auth_start kommt die meldung: 01_auth_start requested, watch readings
Der Log zeigt  kommt folgende Fehlermeldung:
2023.01.24 21:07:24 5 : WR_1_API: get called with 01_auth_start 
2023.01.24 21:07:24 5 : WR_1_API: get found option 01_auth_start in attribute get01Name
2023.01.24 21:07:24 4 : WR_1_API: get will now request 01_auth_start, no optional value
2023.01.24 21:07:24 5 : WR_1_API: AddToQueue adds type get01 to URL http://%IP-WR%/api/v1/auth/start, data %START%, header Accept-Encoding: gzip,deflate
Content-type:application/json, Accept:application/json, Connection:keep-alive, retry 0, initial queue len: 0
2023.01.24 21:07:24 5 : WR_1_API: HandleSendQueue called from AddToSendQueue, qlen = 1
2023.01.24 21:07:24 4 : WR_1_API: HandleSendQueue sends get01 with timeout 2 to http://%IP-WR%/api/v1/auth/start, 
data: %START%, 
header: Accept-Encoding: gzip,deflate
Content-type:application/json, Accept:application/json, Connection:keep-alive
2023.01.24 21:07:24 5 : WR_1_API: ReadCallback called from __ANON__
2023.01.24 21:07:24 5 : WR_1_API: Read callback Error LogLvl set to 3, regex 
2023.01.24 21:07:24 3 : WR_1_API: Read callback: Error: gethostbyname %IP-WR% failed
2023.01.24 21:07:24 4 : WR_1_API: Read callback: request type was get01 retry 0, no headers, no body
<div class='fhe
2023.01.24 21:07:24 4 : WR_1_API: BodyDecode is not decoding the response body (charset not found, bodyDecode defaults to none)
2023.01.24 21:07:24 5 : WR_1_API: GetCookies is looking for Cookies
2023.01.24 21:07:24 5 : WR_1_API: ExtractSid called, context get, num 01
2023.01.24 21:07:24 4 : WR_1_API: no header to look for redirects
2023.01.24 21:07:24 5 : WR_1_API: Read callback sets LAST_REQUEST to get01
2023.01.24 21:07:24 5 : WR_1_API: CheckAuth decided no authentication required


vielleicht ist im device auch etwas nicht richtig eingerichtet. beim Aufruf comment bin ich mir nciht sicher.

ch.eick

Zitat
2023.01.24 21:07:24 3 : WR_1_API: Read callback: Error: gethostbyname %IP-WR% failed

vielleicht ist im device auch etwas nicht richtig eingerichtet.
Moin,
Hast du im WR_1_config die IP-ADRESSE  des WRs eingetragen?

Comment kann auch gelöscht werden, oder Du kopierst den Inhalt nochmal neu in das Attribut. Das ist für mich ein Feld für Erinnerungen.

VG Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

u.stemler

Hallo Christian,
ich habe die IP in der WR_1_config (Dummy) korrekt eingebunden.
Hast Du noch eine Idee?
Internals:
   FUUID      63d1bb69-f33f-e971-d32b-93079ae17824cfc1
   NAME       WR_1_config
   NR         147
   STATE      ???
   TYPE       dummy
   eventCount 1
   READINGS:
     2020-09-11 07:36:39   Forecast_Station P0178
     2020-08-31 12:39:26   IP-FHEM         192.168.178.188
     2023-01-30 21:27:59   IP-WR_1         192.189.178.162
Attributes:
   DbLogExclude .*
   alias      WR_1_config
   comment    Version 2021.04.07 12:00
Passworte für die Abfrage des WR_1_API werden im storeKeyValue abgelegt:
   {KeyValue("[read|store]","PW_<Device Name>_<Benutzer Name>","<passwort>")}
   {KeyValue("store","PW_WR_1_API_user","<passwort>")}

Steht das reading module_*_count auf 0 wird diese Ausrichtung nicht berücksichtigt

Korrekturkurven:
         Steilheit  Parallel
                    verschiebung
tempk      -0.39      25
cloudk     -0.65       0
raink      -0.30       0
Der Slider für die Steilheit wird mit - k/100 umgerechnet. 39 ==> -0.39
   event-on-change-reading .*
   group      PV Eigenverbrauch
   icon       solar_icon
   readingList IP-WR_1 IP-WR_1_Speicher_1 IP-WR_1_KSEM IP-FHEM module_1_active module_2_active module_3_active module_1_name module_2_name module_3_name  module_4_name module_5_name module_1_direction module_2_direction module_3_direction module_4_direction module_5_direction module_1_count module_2_count module_3_count module_4_count module_5_count module_1_power module_2_power module_3_power module_4_power module_5_power module_1_plain module_2_plain module_3_plain module_4_plain module_5_plain forecast_cloudk forecast_cloudk_base forecast_raink forecast_raink_base forecast_tempk forecast_tempk_base forecast_factor forecast_factor_autocorrection Forecast_Station
   room       Photovoltaik
   setList    IP-WR_1 IP-WR_1_Speicher_1 IP-WR_1_KSEM IP-FHEM module_1_name:WR_1_Ost,WR_1_West,WR_2_Sued,WR_2_West,East,SouthEast,South,SouthWest,West,Garage,CarPort module_2_name:WR_1_Ost,WR_1_West,WR_2_Sued,WR_2_West,East,SouthEast,South,SouthWest,West,Garage,CarPort module_3_name:WR_1_Ost,WR_1_West,WR_2_Sued,WR_2_West,East,SouthEast,South,SouthWest,West,Garage,CarPort,frei module_4_name:WR_1_Ost,WR_1_West,WR_2_Sued,WR_2_West,East,SouthEast,South,SouthWest,West,Garage,CarPort,frei module_5_name:WR_1_Ost,WR_1_West,WR_2_Sued,WR_2_West,East,SouthEast,South,SouthWest,West,Garage,CarPort,frei module_1_direction module_2_direction module_3_direction module_4_direction module_5_direction module_1_count module_2_count module_3_count module_4_count module_5_count module_1_power module_2_power module_3_power module_4_power module_5_power module_1_plain module_2_plain module_3_plain module_4_plain module_5_plain forecast_cloudk forecast_cloudk_base forecast_raink forecast_raink_base forecast_tempk forecast_tempk_base forecast_factor forecast_factor_autocorrection Forecast_Station
   sortby     113
   verbose    5

ch.eick

Zitat von: u.stemler am 30 Januar 2023, 21:50:45IP-WR_1         192.189.178.162
Vergleich die IP-WR_1 noch mal, die ist falsch.
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

u.stemler

 :-[  Entschuldigung - ich hatte vorhin noch etwas ausprobiert und mich dabei verschrieben.
Hier nochmal die List, die nciht funktioniert.

Internals:
   FUUID      63d1bb69-f33f-e971-d32b-93079ae17824cfc1
   NAME       WR_1_config
   NR         146
   STATE      ???
   TYPE       dummy
   READINGS:
     2023-01-30 23:39:32   Forecast_Station P0178
     2020-08-31 12:39:26   IP-FHEM         192.168.178.188
     2023-01-30 23:37:42   IP-WR_1         192.168.178.162
Attributes:
   DbLogExclude .*
   alias      WR_1_config
   comment    Version 2021.04.07 12:00
Passworte für die Abfrage des WR_1_API werden im storeKeyValue abgelegt:
   {KeyValue("[read|store]","PW_<Device Name>_<Benutzer Name>","<passwort>")}
   {KeyValue("store","PW_WR_1_API_user","<passwort>")}

Steht das reading module_*_count auf 0 wird diese Ausrichtung nicht berücksichtigt

Korrekturkurven:
         Steilheit  Parallel
                    verschiebung
tempk      -0.39      25
cloudk     -0.65       0
raink      -0.30       0
Der Slider für die Steilheit wird mit - k/100 umgerechnet. 39 ==> -0.39
   event-on-change-reading .*
   group      PV Eigenverbrauch
   icon       solar_icon
   readingList IP-WR_1 IP-WR_1_Speicher_1 IP-WR_1_KSEM IP-FHEM module_1_active module_2_active module_3_active module_1_name module_2_name module_3_name  module_4_name module_5_name module_1_direction module_2_direction module_3_direction module_4_direction module_5_direction module_1_count module_2_count module_3_count module_4_count module_5_count module_1_power module_2_power module_3_power module_4_power module_5_power module_1_plain module_2_plain module_3_plain module_4_plain module_5_plain forecast_cloudk forecast_cloudk_base forecast_raink forecast_raink_base forecast_tempk forecast_tempk_base forecast_factor forecast_factor_autocorrection Forecast_Station
   room       Photovoltaik
   setList    IP-WR_1 IP-WR_1_Speicher_1 IP-WR_1_KSEM IP-FHEM module_1_name:WR_1_Ost,WR_1_West,WR_2_Sued,WR_2_West,East,SouthEast,South,SouthWest,West,Garage,CarPort module_2_name:WR_1_Ost,WR_1_West,WR_2_Sued,WR_2_West,East,SouthEast,South,SouthWest,West,Garage,CarPort module_3_name:WR_1_Ost,WR_1_West,WR_2_Sued,WR_2_West,East,SouthEast,South,SouthWest,West,Garage,CarPort,frei module_4_name:WR_1_Ost,WR_1_West,WR_2_Sued,WR_2_West,East,SouthEast,South,SouthWest,West,Garage,CarPort,frei module_5_name:WR_1_Ost,WR_1_West,WR_2_Sued,WR_2_West,East,SouthEast,South,SouthWest,West,Garage,CarPort,frei module_1_direction module_2_direction module_3_direction module_4_direction module_5_direction module_1_count module_2_count module_3_count module_4_count module_5_count module_1_power module_2_power module_3_power module_4_power module_5_power module_1_plain module_2_plain module_3_plain module_4_plain module_5_plain forecast_cloudk forecast_cloudk_base forecast_raink forecast_raink_base forecast_tempk forecast_tempk_base forecast_factor forecast_factor_autocorrection Forecast_Station
   sortby     113
   verbose    5

ch.eick

Zitat von: u.stemler am 30 Januar 2023, 23:43:46
:-[  Entschuldigung - ich hatte vorhin noch etwas ausprobiert und mich dabei verschrieben.
Dann schau doch bitte nochmal für das WR_1_API bei verbose 5 ins Log. Da muss der API Aufruf mit der eingesetzten IP Adresse geschehen. Ansonsten ist bei dem replacement etwas falsch aus dem Wiki übernommen.
VG Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

u.stemler

Hallo Christan,
vielen Dank für Deine Unterstüzung.
Ich habe WR-1, WR_1_API und WR_1_config neuangelegt, dann hat alles funktioniert.

udo