Hallo zusammen,
bisher habe ich die Powerwall über HTTPMOD abgefragt, seid dem 08.02.2021 19:36 funktioniert dies nicht mehr.
Es kommt Fehler 403
Hier ein List:Internals:
BUSY 0
DEF none 30
FUUID 5d91ff79-f33f-ab8b-51df-83a8d674c6b97bb6
Interval 30
MainURL
ModuleVersion 4.1.02 - 4.2.2021
NAME Tesla_Powerwall2
NOTIFYDEV global
NR 451
NTFY_ORDER 50-Tesla_Powerwall2
STATE Solar -0.00 kW, Eigenverbrauch 1.32 kW, Netz 1.33 kW, Batterie 0.00 kW
TYPE HTTPMOD
value
HttpUtils:
NAME
addr https://192.168.178.31:443
auth 0
buf
code 403
compress 1
conn
data
displayurl https://192.168.178.31/api/meters/aggregates
header
host 192.168.178.31
httpheader HTTP/1.0 403 Forbidden
Content-Encoding: gzip
Content-Type: application/json
X-Content-Type-Options: nosniff
Date: Wed, 10 Feb 2021 15:06:42 GMT
Content-Length: 114
httpversion 1.0
hu_blocking 0
hu_filecount 1
hu_port 443
hu_portSfx
ignoreredirects 1
loglevel 4
path /api/meters/aggregates
protocol https
redirects 0
timeout 2
url https://192.168.178.31/api/meters/aggregates
sslargs:
QUEUE:
READINGS:
2021-02-08 19:35:59 Batterie 0
2021-02-08 19:35:57 Eigenverbrauch 1321.31657916817
2021-02-08 19:36:00 Netz 1330.32440185547
2021-02-08 19:35:56 Solar -2.30260229110718
2021-02-08 19:36:00 battery_energy_exported 6728650
2021-02-08 19:36:00 battery_energy_imported 7768100
2021-02-08 19:36:00 battery_frequency 50.014
2021-02-08 19:36:00 battery_i_a_current 0
2021-02-08 19:36:00 battery_i_b_current 0
2021-02-08 19:36:00 battery_i_c_current 0
2021-02-08 19:36:00 battery_instant_apparent_power 310.161248385416
2021-02-08 19:36:00 battery_instant_average_voltage 228.9
2021-02-08 19:36:00 battery_instant_power 10
2021-02-08 19:36:00 battery_instant_reactive_power 310
2021-02-08 19:36:00 battery_instant_total_current -0.3
2021-02-08 19:36:00 battery_last_communication_time 2021-02-08T19:36:00.790210376+01:00
2021-02-08 19:36:00 battery_timeout 1500000000
2021-02-10 16:06:42 code 403
2021-02-10 16:06:42 error Unable to GET to resource
2021-02-08 19:36:00 load_energy_exported 0
2021-02-08 19:36:00 load_energy_imported 25912458.2694444
2021-02-08 19:36:00 load_frequency 49.9997138977051
2021-02-08 19:36:00 load_i_a_current 0
2021-02-08 19:36:00 load_i_b_current 0
2021-02-08 19:36:00 load_i_c_current 0
2021-02-08 19:36:00 load_instant_apparent_power 1320.64215246624
2021-02-08 19:36:00 load_instant_average_voltage 228.593795776367
2021-02-08 19:36:00 load_instant_power 1319.1994355221
2021-02-08 19:36:00 load_instant_reactive_power -61.713403640001
2021-02-08 19:36:00 load_instant_total_current 5.77093280699828
2021-02-08 19:36:00 load_last_communication_time 2021-02-08T19:36:00.789945044+01:00
2021-02-08 19:36:00 load_timeout 1500000000
2021-02-10 16:06:42 message User does not have adequate access rights
2021-02-08 19:36:00 site_energy_exported 11388089.8775068
2021-02-08 19:36:00 site_energy_imported 8445114.19361789
2021-02-08 19:36:00 site_frequency 49.9997138977051
2021-02-08 19:36:00 site_i_a_current 0
2021-02-08 19:36:00 site_i_b_current 0
2021-02-08 19:36:00 site_i_c_current 0
2021-02-08 19:36:00 site_instant_apparent_power 1384.93893171415
2021-02-08 19:36:00 site_instant_average_voltage 228.593795776367
2021-02-08 19:36:00 site_instant_power 1330.32440185547
2021-02-08 19:36:00 site_instant_reactive_power -385.088081359863
2021-02-08 19:36:00 site_instant_total_current 0
2021-02-08 19:36:00 site_last_communication_time 2021-02-08T19:36:00.789945044+01:00
2021-02-08 19:36:00 site_timeout 1500000000
2021-02-08 19:36:00 solar_energy_exported 29964392.1606314
2021-02-08 19:36:00 solar_energy_imported 69508.2072980959
2021-02-08 19:36:00 solar_frequency 49.9997138977051
2021-02-08 19:36:00 solar_i_a_current 0
2021-02-08 19:36:00 solar_i_b_current 0
2021-02-08 19:36:00 solar_i_c_current 0
2021-02-08 19:36:00 solar_instant_apparent_power 22.4560216596205
2021-02-08 19:36:00 solar_instant_average_voltage 228.17155456543
2021-02-08 19:36:00 solar_instant_power -2.75086355209351
2021-02-08 19:36:00 solar_instant_reactive_power 22.2868943214417
2021-02-08 19:36:00 solar_instant_total_current 0
2021-02-08 19:36:00 solar_last_communication_time 2021-02-08T19:36:00.790587376+01:00
2021-02-08 19:36:00 solar_timeout 1500000000
REQUEST:
context get
data
header
ignoreredirects 0
num 04
priority 1
retryCount 0
type get04
url https://192.168.178.31/api/meters/aggregates
defptr:
readingBase:
code get
error get
message get
readingNum:
code 04
error 04
message 04
readingOutdated:
requestReadings:
get01:
code get 01
error get 01
message get 01
get02:
code get 02
error get 02
message get 02
get03:
code get 03
error get 03
message get 03
get04:
code get 04
error get 04
message get 04
lastpoll:
Batterie 1612969595.5252
Eigenverbrauch 1612969595.5252
Netz 1612969595.5252
Solar 1612969595.5252
Attributes:
alias Tesla_Powerwall2
disable 0
extractAllJSON 1
get01JSON solar_instant_power
get01Name Solar
get01Poll 1
get02JSON load_instant_power
get02Name Eigenverbrauch
get02Poll 1
get03JSON battery_instant_power
get03Name Batterie
get03Poll 1
get04JSON site_instant_power
get04Name Netz
get04Poll 1
getURL http://192.168.178.31/api/meters/aggregates
group Solaranlage
room Energie
stateFormat {sprintf"Solar %.2f kW, Eigenverbrauch %.2f kW, Netz %.2f kW, Batterie %.2f kW", ReadingsVal($name,"Solar",0)/1000, ReadingsVal($name,"Eigenverbrauch",0)/1000,ReadingsVal($name,"Netz",0)/1000, ReadingsVal($name,"Batterie",0)/1000}
userattr get01Poll:0,1 get02Poll:0,1 get03Poll:0,1 get04Poll:0,1 getData
verbose 2
Kann mir bitte jemand mitteilen, wo ich denn bitte die Zugangsdaten zur PW Einpflegen muss.
Gruß
Ralf
Edit
Das Modul wurde von CoolTux überarbeitet.
Siehe : https://forum.fhem.de/index.php/topic,78145.0.html
Funktioniert denn das Modul bei Dir nicht?
Gibt doch eine API, da sollte so was drin beschrieben sein.
Das ist ein Problem, das seit Firmwareversion 20.49.0 auftritt, da sind die Sicherheitsanforderungen bei der Powerwall verstärkt worden. Bei mir funktioniert das Modul seit genau dem gleichen Datum auch nicht mehr.
Zitat von: twiederh am 10 Februar 2021, 20:02:31
Das ist ein Problem, das seit Firmwareversion 20.49.0 auftritt, da sind die Sicherheitsanforderungen bei der Powerwall verstärkt worden. Bei mir funktioniert das Modul seit genau dem gleichen Datum auch nicht mehr.
Dann muss ich mir das mal anschauen.
Hallo CoolTux,
dein Modul läuft auch nicht.
Auch hier mal ein List:
Internals:
DEF 192.168.178.31
FUUID 6023f4e3-f33f-ab8b-c1f3-b3fccc601fd327f7
FVERSION 46_TeslaPowerwall2AC.pm:v0.8.0-s22121/2020-06-05 UNDER DEVELOP
HOST 192.168.178.31
INTERVAL 300
NAME myPowerWall
NOTIFYDEV global,myPowerWall
NR 515
NTFY_ORDER 50-myPowerWall
STATE disabled
TYPE TeslaPowerwall2AC
VERSION v0.8.0
READINGS:
2021-02-10 15:59:54 actionQueue 9 entries in the Queue
2021-02-10 16:09:54 batteryPower 0.0
2021-02-10 16:10:21 lastRequestError Path: gridstatus 403 - Error: Unable to GET to resource Messages: User does not have adequate access rights
2021-02-10 18:07:56 state disabled
2021-02-10 16:09:54 status-commission_count 2
2021-02-10 16:09:54 status-device_type hec
2021-02-10 16:09:54 status-git_hash 42eb71218f889a3aa3635b7b57cffe1de76b7438
2021-02-10 16:09:54 status-is_new 0
2021-02-10 16:09:54 status-start_time 2021-02-08 19:36:46 +0800
2021-02-10 16:09:54 status-sync_type v1
2021-02-10 16:09:54 status-up_time_seconds 44h33m8.253372491s
2021-02-10 16:09:54 status-version 20.49.0
actionQueue:
Attributes:
alias myPowerWall
disable 1
room Tesla
Gruß
Ralf
Zitat von: CoolTux am 11 Februar 2021, 05:20:42
Dann muss ich mir das mal anschauen.
Kann ich Dir dabei irgendwie helfen (Logs, Zugang zu einer Powerwall, die auf 20.49.0 ist)?
Zitat von: twiederh am 11 Februar 2021, 14:03:54
Kann ich Dir dabei irgendwie helfen (Logs, Zugang zu einer Powerwall, die auf 20.49.0 ist)?
Aktuell erstmal nicht. Ich muss mir das anschauen und das kann ich wenn dann erst am Wochenende. Würde mich kurzfristig melden.
Der Powerwall verwendet seit letzter Woche Oauth v3 Autorisation.
https://github.com/vloschiavo/powerwall2/issues/41
Zitat von: Tester15 am 12 Februar 2021, 10:29:52
Der Powerwall verwendet seit letzter Woche Oauth v3 Autorisation.
https://github.com/vloschiavo/powerwall2/issues/41
Und?
Bekommst Du deine Powerwall in FHEM eingebunden?
Gruß
Ralf
Zitat von: pnewman am 13 Februar 2021, 13:34:16
Und?
Bekommst Du deine Powerwall in FHEM eingebunden?
Gruß
Ralf
Auf der Linux Kommando Zeile mit curl und Cookie funktioniert es,
nur an der Perl Umsetzung hakt es.
curl -s -k -i -c /home/pi/cookie.txt -X POST -H "Content-Type: application/json" -d '{"username":"customer","password":"P@ssw0rd", "email":"customer@customer.domain","force_sm_off":false}' "https://%powerwall_IP%/api/login/Basic"
curl -k -b /home/pi/cookie.txt https://%powerwall_IP%/api/meters/aggregates
Gibt es hier schon ein Update? Status?
Von mir leider nein. Komme die Tage nicht dazu etwas am Modul zu machen.
Zitat von: CoolTux am 18 Februar 2021, 09:31:53
Von mir leider nein. Komme die Tage nicht dazu etwas am Modul zu machen.
Wann denkst du denn hast du Zeit? Ich denke es ist überhaupt nicht viel, da du Teile der Authentifikation bereits im Code drin hast:
elsif ( $path eq 'login' ) {
$method = 'POST';
$header = 'Content-Type: application/json';
$data = '{"username":"","password":"S'
. ReadingsVal( $hash->{NAME},
'powerwalls-wall_0_PackageSerialNumber', 0 )
. '","force_sm_off":false}';
}
Nutzt du denn selbst das Modul noch?
Zitat von: TimoD am 18 Februar 2021, 14:43:11
Wann denkst du denn hast du Zeit? Ich denke es ist überhaupt nicht viel, da du Teile der Authentifikation bereits im Code drin hast:
elsif ( $path eq 'login' ) {
$method = 'POST';
$header = 'Content-Type: application/json';
$data = '{"username":"","password":"S'
. ReadingsVal( $hash->{NAME},
'powerwalls-wall_0_PackageSerialNumber', 0 )
. '","force_sm_off":false}';
}
Nutzt du denn selbst das Modul noch?
Ich habe es nie benutzt. War eine Auftragsarbeit. Naja eine Bitte eines Users um genau zu sein.
Zitat von: CoolTux am 18 Februar 2021, 18:23:58
Ich habe es nie benutzt. War eine Auftragsarbeit. Naja eine Bitte eines Users um genau zu sein.
Oh, dann kommen hier bestimmt noch weitere Bitten von vielen Nutzern, die dein Modul ins Herz geschlossen haben :-[
Bitte Bitte ;D
Denkst du, du wirst es irgendwann anpassen? Und falls ja, hast du einen ca. Zeithorizont?
Hab das Teil in der Ansicht meiner Hausautomation und möchte es nicht missen
Danke @Tester15 hab mit deinem Hinweis eine Lösung gefunden, nicht schön aber geht: nur in kürze, weil es spät ist :-)
Bei 1. + 4. Passwort / Email / IP Adresse anpassen nicht vergessen!
1. Über SSH und fhem User: {qx(,,curl -s -k -i -c /opt/fhem/cookie.txt -X POST -H "Content-Type: application/json" -d '{"username":"customer","password":"01234", "email":"mail@mail.me","force_sm_off":false}' "https://192.168.178.XXX/api/login/Basic"")}
Ab ins FHEM:
2. define PowerwallDummy dummy
attr PowerwallDummy readingList jasonInput real jasonInputAggregates jasonInputAggregates1 Update Prozent1 Prozent2 Prozent ProzentGUI Aggregates Solarpower Solarpower1 Gridpower1 Gridpower Batterypower Batterypower1 Housepower1 Housepower
3. define n_PowerwallDummy notify PowerwallDummy:Update.*
4. Notify Anpassen:
PowerwallDummy:Update.* {if ("$EVTPART1" eq "1"){
my $b = qx(curl -s -k -b /opt/fhem/cookie.txt https://192.168.178.92/api/system_status/soe 2>&1);;
fhem("set PowerwallDummy jasonInput $b");
fhem ("set PowerwallDummy Prozent2 " .(split ":", (ReadingsVal("PowerwallDummy","jasonInput","")))[1]);
fhem ("set PowerwallDummy Prozent " .round((split "}", (ReadingsVal("PowerwallDummy","Prozent2","")))[0],1));}
elsif("$EVTPART1" eq "2"){
my $b = qx(curl -s -k -b /opt/fhem/cookie.txt https://192.168.178.92/api/meters/aggregates 2>&1);;
fhem("set PowerwallDummy jasonInputAggregates $b");
fhem ("set PowerwallDummy Gridpower1 " .(split ":", (ReadingsVal("PowerwallDummy","jasonInputAggregates","")))[6]);
fhem ("set PowerwallDummy Gridpower " .round((split ",", (ReadingsVal("PowerwallDummy","Gridpower1","")))[0],0));
fhem ("set PowerwallDummy Solarpower1 " .(split ":", (ReadingsVal("PowerwallDummy","jasonInputAggregates","")))[75]);
fhem ("set PowerwallDummy Solarpower " .round((split ",", (ReadingsVal("PowerwallDummy","Solarpower1","")))[0],0));
fhem ("set PowerwallDummy Batterypower1 " .(split ":", (ReadingsVal("PowerwallDummy","jasonInputAggregates","")))[29]);
fhem ("set PowerwallDummy Batterypower " .round((split ",", (ReadingsVal("PowerwallDummy","Batterypower1","")))[0],0));
fhem ("set PowerwallDummy Housepower1 " .(split ":", (ReadingsVal("PowerwallDummy","jasonInputAggregates","")))[52]);
fhem ("set PowerwallDummy Housepower " .round(((split ",", (ReadingsVal("PowerwallDummy","Housepower1","")))[0])*(-1),0));
fhem ("set HomeBattery " .ReadingsVal("PowerwallDummy","Prozent",""));
}}
5. Über eine Zeitsteuerung Updates abfragen:
define T_alle10Sek at +*00:00:30 set PowerwallDummy Update 1; define Prozent at +00:00:15 set PowerwallDummy Update 2;;
6. Bonus: Real Prozent der Battery
attr PowerwallDummy userReadings real {round((ReadingsVal($name,"Prozent","0")-5)*(100/95),1)}
Grüße Timo
Zitat von: TimoD am 18 Februar 2021, 20:43:38
Oh, dann kommen hier bestimmt noch weitere Bitten von vielen Nutzern, die dein Modul ins Herz geschlossen haben :-[
Bitte Bitte ;D
Denkst du, du wirst es irgendwann anpassen? Und falls ja, hast du einen ca. Zeithorizont?
Hab das Teil in der Ansicht meiner Hausautomation und möchte es nicht missen
Ich schaue es mir sehr gern an, wird aber wohl nichts vor Anfang nächsten Monats.
Zitat von: TimoD am 18 Februar 2021, 21:17:25
Danke @Tester15 hab mit deinem Hinweis eine Lösung gefunden, nicht schön aber geht: nur in kürze, weil es spät ist :-)
Bei 1. + 4. Passwort / Email / IP Adresse anpassen nicht vergessen!
1. Über SSH und fhem User: {qx(,,curl -s -k -i -c /opt/fhem/cookie.txt -X POST -H "Content-Type: application/json" -d '{"username":"customer","password":"01234", "email":"mail@mail.me","force_sm_off":false}' "https://192.168.178.XXX/api/login/Basic"")}
Grüße Timo
Hallo Zusammen,
wie und wo genau mache ich das mit dem curl Befehl?
Wenn ich es über putty und der IP des Raspi mache (natürlich mit angepasster IP, Passwort, email), bekomme ich bei dem Befehl von 1. folgende Meldung :
-bash: syntax error near unexpected token `,,curl'
@CoolTux: Wäre super wenn du dein Modul anpasst, würde es auch gerne nutzen
Danke im Vorraus für die Unterstützung.
Gruß
Ather
Zitat von: TimoD am 18 Februar 2021, 21:17:25
1. Über SSH und fhem User: {qx(,,curl -s -k -i -c /opt/fhem/cookie.txt -X POST -H "Content-Type: application/json" -d '{"username":"customer","password":"01234", "email":"mail@mail.me","force_sm_off":false}' "https://192.168.178.XXX/api/login/Basic"")}
Hallo TimoD,
ich wollte gerade - nachdem mich das Update am Freitag auch ereilt hatte - die Abfrage der Powerwall umstellen.
Leider scheitere ich an dem ersten Punkt und bekomme die Fehlermeldung "-bash: Syntaxfehler beim unerwarteten Wort ',,curl' ".
Ich bin zu wenig firm um das zu bewerten, aber kann dass mit dem Parenthesezeichen (,,) zu tun haben, welches das hochgestellte sein müsste (") ?
Danke für Deinen Wissenstransfer ;-)
Christian aka Kontrabass
Tante Edit: Gerade gesehen, dass nahezu zeitgleich ein weiterer User (ather) dazu auch geschrieben hat und schneller auf Speichern gedrückt hat....
Hallo Timo,
vielen Dank für deine Hilfe.
Über Terminal erhalte ich folgendes zurück:
pi@raspi3b-fhem:~ $ curl -s -k -i -c /home/pi/cookie.txt -X POST -H "Content-Type: application/json" -d '{"username":"customer","password":"XXXXX","email":"YYYYYYY@gmx.de","force_sm_off":false}' "https://192.168.178.VVV/api/login/Basic"
HTTP/2 401
content-type: application/json
x-content-type-options: nosniff
content-length: 62
date: Sat, 20 Feb 2021 20:14:15 GMT
{"code":401,"error":"bad credentials","message":"Login Error"}pi@raspi3b-fhem:~ $
Wenn ich deine Zeile eingebe:
pi@raspi3b-fhem:~ $ {qx(,,curl -s -k -i -c /opt/fhem/cookie.txt -X POST -H "Content-Type: application/json" -d '{"username":"customer","password":"01234", "email":"mail@mail.me","force_sm_off":false}' "https://192.168.178.XXX/api/login/Basic"")}
-bash: Syntaxfehler beim unerwarteten Wort `,,curl'
Berichtigt? :
{qx("curl -s -k -i -c /opt/fhem/cookie.txt -X POST -H "Content-Type:application/json" -d '{"username":"customer","password":"XXX", "email":"YYYYY@gmx.de","force_sm_off":false}' "https://192.168.178.VVV/api/login/Basic"")}
-bash: Syntaxfehler beim unerwarteten Wort `"curl -s -k -i -c /opt/fhem/cookie.txt -X POST -H "Content-Type:application/json" -d '{"username":"customer","password":"XXXX", "email":"YYYYYYY@gmx.de","force_sm_off":false}' "https://192.168.178.VVV/api/login/Basic""'
pi@raspi3b-fhem:~ $
Da komme ich leider nicht weiter.
Gruß
Ralf
Zitat von: ather am 20 Februar 2021, 10:49:00
@CoolTux: Wäre super wenn du dein Modul anpasst, würde es auch gerne nutzen
Danke im Vorraus für die Unterstützung.
Gruß
Ather
Ich arbeite daran. Leider habe ich aktuell wenig Zeit. Bin aber dran.
Hallo zusammen,
bin auch nicht firm mit der Thematik, kann Euch nur beschreiben wie es bei mir geht:
1. Wichtig Ihr müsst mit Eurem fhem Benutzer über SSH angemeldet sein (nicht über den PI Benutzer, wie ihr diesen aktiviert / ein Passwort vergebet, am besten googeln)
2. Melde ich mich dann über SSH und Termius am Raspberry an und mit folgendem Befehl:
curl -s -k -i -c /opt/fhem/cookie.txt -X POST -H "Content-Type: application/json" -d '{"username":"customer","password":"03232", "email":"timo@do.me","force_sm_off":false}' "https://192.168.178.92/api/login/Basic"
Exakt so ohne weitere Hochkommas o.ä.
JA die Hochkommas waren falsch Autokorrektur MAC :-X
Hoffe das hilft,...
Hallo Timo,
zum punkt 1 komme ich einfach nicht weiter.
Ich habe jetzt Benutzernamen und Passwort für Fhem festgelegt. Jedoch wenn ich mich über putty am PI anmelden will, verschwindet das Putty-Fenster sobald ich Fhem user und passwort eingebe. Muss ich das direkt am PI machen? Geht es nicht remote über putty und ssh verbindung?
Gruß
Ather
Zitat von: ather am 22 Februar 2021, 10:04:59
Hallo Timo,
zum punkt 1 komme ich einfach nicht weiter.
Ich habe jetzt Benutzernamen und Passwort für Fhem festgelegt. Jedoch wenn ich mich über putty am PI anmelden will, verschwindet das Putty-Fenster sobald ich Fhem user und passwort eingebe. Muss ich das direkt am PI machen? Geht es nicht remote über putty und ssh verbindung?
Gruß
Ather
Das liegt daran weil fhem ein Dienst User ist und kein System User. Schau mal in die /etc/passwd da steht unter anderem hinter dem fhem /bin/false da muss wenn dann /bin/bash rein. Aber bitte bitte tut Euch den Gefallen und wisst was ihr macht. Sonst zerschießt ihr Euch das System.
Danke cooltux,
Am liebsten wäre mir/uns natürlich dein Tool. Aber da mein Energiemanager, Überschuss Speicherung, und weitere Sachen drüber laufen benötige ich die Daten von Tesla pw und möchte das bis zur Modul Fertigstellung so probieren.
Gruß
Mann muß nicht unbedingt gleich User/Passwort/Shell setzen für den User FHEM, bitte tut es euch NICHT an. Auf Shellebene gibt es andere Möglichkeiten dazu.
Einfach erstmal user pi anmelden und dann zum User fhem switchen:
sudo su -s /bin/bash - fhem
Bin mir jetzt mit dem sudo nicht so sicher, weil ich es in 2 Steps durchgeführt und damit nicht getestet habe, sollte aber funzen. Sonst erst root werden (sudo -i) und dann zu fhem werden (su -s /bin/bash - fhem)
Zitat von: Wernieman am 22 Februar 2021, 10:36:58
Mann muß nicht unbedingt gleich User/Passwort/Shell setzen für den User FHEM, bitte tut es euch NICHT an. Auf Shellebene gibt es andere Möglichkeiten dazu.
Einfach erstmal user pi anmelden und dann zum User fhem switchen:
sudo su -s /bin/bash - fhem
Bin mir jetzt mit dem sudo nicht so sicher, weil ich es in 2 Steps durchgeführt und damit nicht getestet habe, sollte aber funzen. Sonst erst root werden (sudo -i) und dann zu fhem werden (su -s /bin/bash - fhem)
Super Danke. Hat funktioniert. Ich bekomme jetzt wieder Werte von tesla in Fhem angezeigt.
Allerdings habe ich noch eine Frage zum at Befehl. Sollten hier dann 2 at Befehle rauskommen die jeweils Update 2 und 1 ausführen oder kann man diese zwei Befehle zusammenfassen in eine at ? Wenn ich die zeile 5 von Timo direkt eintippe, kommt nur ein at Befehl raus und Update 2 wird nicht ausgeführt.
Außerdem habe ich festgestellt, dass wenn ich den event-on-change-reading parameter setze und auf einige readings begrenze, die Werte nicht mehr upgedatet werden (keine Werte). Erst wenn ich wieder alle readings zulasse erfolgt ein update.
Habt ihr ne idee woran das liegt?
Gruß
Ather
Zitat von: TimoD am 18 Februar 2021, 21:17:25
3. define n_PowerwallDummy notify PowerwallDummy:Update.*
4. Notify Anpassen:
PowerwallDummy:Update.* {if ("$EVTPART1" eq "1"){
my $b = qx(curl -s -k -b /opt/fhem/cookie.txt https://192.168.178.92/api/system_status/soe 2>&1);;
fhem("set PowerwallDummy jasonInput $b");
fhem ("set PowerwallDummy Prozent2 " .(split ":", (ReadingsVal("PowerwallDummy","jasonInput","")))[1]);
fhem ("set PowerwallDummy Prozent " .round((split "}", (ReadingsVal("PowerwallDummy","Prozent2","")))[0],1));}
elsif("$EVTPART1" eq "2"){
my $b = qx(curl -s -k -b /opt/fhem/cookie.txt https://192.168.178.92/api/meters/aggregates 2>&1);;
fhem("set PowerwallDummy jasonInputAggregates $b");
fhem ("set PowerwallDummy Gridpower1 " .(split ":", (ReadingsVal("PowerwallDummy","jasonInputAggregates","")))[6]);
fhem ("set PowerwallDummy Gridpower " .round((split ",", (ReadingsVal("PowerwallDummy","Gridpower1","")))[0],0));
fhem ("set PowerwallDummy Solarpower1 " .(split ":", (ReadingsVal("PowerwallDummy","jasonInputAggregates","")))[75]);
fhem ("set PowerwallDummy Solarpower " .round((split ",", (ReadingsVal("PowerwallDummy","Solarpower1","")))[0],0));
fhem ("set PowerwallDummy Batterypower1 " .(split ":", (ReadingsVal("PowerwallDummy","jasonInputAggregates","")))[29]);
fhem ("set PowerwallDummy Batterypower " .round((split ",", (ReadingsVal("PowerwallDummy","Batterypower1","")))[0],0));
fhem ("set PowerwallDummy Housepower1 " .(split ":", (ReadingsVal("PowerwallDummy","jasonInputAggregates","")))[52]);
fhem ("set PowerwallDummy Housepower " .round(((split ",", (ReadingsVal("PowerwallDummy","Housepower1","")))[0])*(-1),0));
fhem ("set HomeBattery " .ReadingsVal("PowerwallDummy","Prozent",""));
}}
Hallo TimoD,
bei 3 & 4 klemmt es bei mir:
Ich habe den Cookie gesetzt (mit der Anleitung und dem user fhem). Scheint zu klappen.
Den Dummy habe ich angelegt und das attribut readinglist gesetzt. Läuft
der notify (3) und if/elseif (4) werfen mir jedoch Fehlermeldungen:
(3): Usage: define <name> notify <regexp> <command>
(4): Unknown command PowerwallDummy:Update.* (und in Folge die Fehler bei der Abarbeitung des if/elseif)
Natürlich habe ich den Code bei mir an die IP Adressen angepasst, aber so weit geht es ja nicht.
Ich finde nicht das Leerzeichen oder das Komma, beim Zählen habe ich eine geschweifte Klammer zu viel. (split "}").
Hat die Autokorrektur da irgendwo im Gebälk auch zugeschlagen?
Etwas ratlos,
Kontrabass
Wer beim aktuellen Problem an der Entwicklung Teil haben möchte ist sehr gerne im Matrix Raum zum Modul eingeladen
#fhem-teslapowerwall-mod:matrix.cooltux.net
Zitat von: CoolTux am 24 Februar 2021, 09:35:40
Wer beim aktuellen Problem an der Entwicklung Teil haben möchte ist sehr gerne im Matrix Raum zum Modul eingeladen
#fhem-teslapowerwall-mod:matrix.cooltux.net
Hallo Cooltux,
mal ne blöde Frage.
Wie komme ich in diesen Matrixraum. Wenn ich "#fhem-teslapowerwall-mod:matrix.cooltux.net" eingebe finde ich nix?
Würde natürlich unterstützen.
Gruß
Ather
Zitat von: ather am 24 Februar 2021, 10:33:23
Hallo Cooltux,
mal ne blöde Frage.
Wie komme ich in diesen Matrixraum. Wenn ich "#fhem-teslapowerwall-mod:matrix.cooltux.net" eingebe finde ich nix?
Würde natürlich unterstützen.
Gruß
Ather
Angemeldet bist Du? Ich schaue nachher mal nach.
Zitat von: ather am 22 Februar 2021, 14:56:33
Super Danke. Hat funktioniert. Ich bekomme jetzt wieder Werte von tesla in Fhem angezeigt.
Hallo ather,
ich finde den Fehler bei mir nicht.....
Da es bei Dir funktioniert - kannst Du den Code des funktionierenden Moduls hier zeigen?
Ich bekomme leider immer noch nichts ausser dem o.g. Fehler angezeigt.
Danke Dir für Deine Unterstützung,
Kontrabass
Probier mal bei 3 diesen Code.
Und denk dran bei 4 beide E-Mail-Adressen anzupassen. Im notify muss dann Update.* gegen den kompletten Code aus 4 mit den richtigen ip's getauscht werden.
3. define n_PowerwallDummy notify PowerwallDummy Update.*
4. Notify Anpassen:
PowerwallDummy:Update.* {if ("$EVTPART1" eq "1"){
my $b = qx(curl -s -k -b /opt/fhem/cookie.txt https://192.168.178. XX/api/system_status/soe 2>&1);;
fhem("set PowerwallDummy jasonInput $b");
fhem ("set PowerwallDummy Prozent2 " .(split ":", (ReadingsVal("PowerwallDummy","jasonInput","")))[1]);
fhem ("set PowerwallDummy Prozent " .round((split "}", (ReadingsVal("PowerwallDummy","Prozent2","")))[0],1));}
elsif("$EVTPART1" eq "2"){
my $b = qx(curl -s -k -b /opt/fhem/cookie.txt https://192.168.178.XX/api/meters/aggregates 2>&1);;
fhem("set PowerwallDummy jasonInputAggregates $b");
fhem ("set PowerwallDummy Gridpower1 " .(split ":", (ReadingsVal("PowerwallDummy","jasonInputAggregates","")))[6]);
fhem ("set PowerwallDummy Gridpower " .round((split ",", (ReadingsVal("PowerwallDummy","Gridpower1","")))[0],0));
fhem ("set PowerwallDummy Solarpower1 " .(split ":", (ReadingsVal("PowerwallDummy","jasonInputAggregates","")))[75]);
fhem ("set PowerwallDummy Solarpower " .round((split ",", (ReadingsVal("PowerwallDummy","Solarpower1","")))[0],0));
fhem ("set PowerwallDummy Batterypower1 " .(split ":", (ReadingsVal("PowerwallDummy","jasonInputAggregates","")))[29]);
fhem ("set PowerwallDummy Batterypower " .round((split ",", (ReadingsVal("PowerwallDummy","Batterypower1","")))[0],0));
fhem ("set PowerwallDummy Housepower1 " .(split ":", (ReadingsVal("PowerwallDummy","jasonInputAggregates","")))[52]);
fhem ("set PowerwallDummy Housepower " .round(((split ",", (ReadingsVal("PowerwallDummy","Housepower1","")))[0])*(-1),0));
fhem ("set HomeBattery " .ReadingsVal("PowerwallDummy","Prozent",""));
}}
5. Über eine Zeitsteuerung Updates abfragen:
define T_alle10Sek at +*00:00:30 set PowerwallDummy Update 1; define Prozent at +*00:00:15 set PowerwallDummy Update 2;;
Gruß
Ather
Zitat von: Kontrabass am 23 Februar 2021, 22:48:38
Hallo TimoD,
bei 3 & 4 klemmt es bei mir:
Ich habe den Cookie gesetzt (mit der Anleitung und dem user fhem). Scheint zu klappen.
Den Dummy habe ich angelegt und das attribut readinglist gesetzt. Läuft
der notify (3) und if/elseif (4) werfen mir jedoch Fehlermeldungen:
(3): Usage: define <name> notify <regexp> <command>
(4): Unknown command PowerwallDummy:Update.* (und in Folge die Fehler bei der Abarbeitung des if/elseif)
Natürlich habe ich den Code bei mir an die IP Adressen angepasst, aber so weit geht es ja nicht.
Ich finde nicht das Leerzeichen oder das Komma, beim Zählen habe ich eine geschweifte Klammer zu viel. (split "}").
Hat die Autokorrektur da irgendwo im Gebälk auch zugeschlagen?
Etwas ratlos,
Kontrabass
Das Problem ist, das fhem beim anlegen komplexer notifys Fehler anzeigt. deswegen der Umweg über Schritt 3. Jetzt musst du beim Anlagen wahrscheinlich nicht ein "set x x;" hinzufügen, dass fhem das akzeptiert.
Im Sinne:
define n_PowerwallDummy notify PowerwallDummy:Update.* set hier irgendwas;
Um dann im notify das "PowerwallDummy:Update.* set hier irgendwas;" durch das in 4. (inkl. angepasster Account Daten zu ersetzen:
PowerwallDummy:Update.* {if ("$EVTPART1" eq "1"){
my $b = qx(curl -s -k -b /opt/fhem/cookie.txt https://192.168.178.92/api/system_status/soe 2>&1);;
fhem("set PowerwallDummy jasonInput $b");
fhem ("set PowerwallDummy Prozent2 " .(split ":", (ReadingsVal("PowerwallDummy","jasonInput","")))[1]);
fhem ("set PowerwallDummy Prozent " .round((split "}", (ReadingsVal("PowerwallDummy","Prozent2","")))[0],1));}
elsif("$EVTPART1" eq "2"){
my $b = qx(curl -s -k -b /opt/fhem/cookie.txt https://192.168.178.92/api/meters/aggregates 2>&1);;
fhem("set PowerwallDummy jasonInputAggregates $b");
fhem ("set PowerwallDummy Gridpower1 " .(split ":", (ReadingsVal("PowerwallDummy","jasonInputAggregates","")))[6]);
fhem ("set PowerwallDummy Gridpower " .round((split ",", (ReadingsVal("PowerwallDummy","Gridpower1","")))[0],0));
fhem ("set PowerwallDummy Solarpower1 " .(split ":", (ReadingsVal("PowerwallDummy","jasonInputAggregates","")))[75]);
fhem ("set PowerwallDummy Solarpower " .round((split ",", (ReadingsVal("PowerwallDummy","Solarpower1","")))[0],0));
fhem ("set PowerwallDummy Batterypower1 " .(split ":", (ReadingsVal("PowerwallDummy","jasonInputAggregates","")))[29]);
fhem ("set PowerwallDummy Batterypower " .round((split ",", (ReadingsVal("PowerwallDummy","Batterypower1","")))[0],0));
fhem ("set PowerwallDummy Housepower1 " .(split ":", (ReadingsVal("PowerwallDummy","jasonInputAggregates","")))[52]);
fhem ("set PowerwallDummy Housepower " .round(((split ",", (ReadingsVal("PowerwallDummy","Housepower1","")))[0])*(-1),0));
fhem ("set HomeBattery " .ReadingsVal("PowerwallDummy","Prozent",""));
}}
Mich würde ja intressieren, wie lacleman den Authentication-Header im Modul verändert hat (siehe Link).
https://forum.fhem.de/index.php/topic,118636.msg1135435.html#new
Zitat von: TimoD am 26 Februar 2021, 07:49:25
Das Problem ist, das fhem beim anlegen komplexer notifys Fehler anzeigt. deswegen der Umweg über Schritt 3. Jetzt musst du beim Anlagen wahrscheinlich nicht ein "set x x;" hinzufügen, dass fhem das akzeptiert.
Im Sinne:
define n_PowerwallDummy notify PowerwallDummy:Update.* set hier irgendwas;
Um dann im notify das "PowerwallDummy:Update.* set hier irgendwas;" durch das in 4. (inkl. angepasster Account Daten zu ersetzen:
PowerwallDummy:Update.* {if ("$EVTPART1" eq "1"){
my $b = qx(curl -s -k -b /opt/fhem/cookie.txt https://192.168.1.1/api/system_status/soe 2>&1);;
fhem("set PowerwallDummy jasonInput $b");
fhem ("set PowerwallDummy Prozent2 " .(split ":", (ReadingsVal("PowerwallDummy","jasonInput","")))[1]);
fhem ("set PowerwallDummy Prozent " .round((split "}", (ReadingsVal("PowerwallDummy","Prozent2","")))[0],1));}
elsif("$EVTPART1" eq "2"){
my $b = qx(curl -s -k -b /opt/fhem/cookie.txt https://192.168.1.1/api/meters/aggregates 2>&1);;
fhem("set PowerwallDummy jasonInputAggregates $b");
fhem ("set PowerwallDummy Gridpower1 " .(split ":", (ReadingsVal("PowerwallDummy","jasonInputAggregates","")))[6]);
fhem ("set PowerwallDummy Gridpower " .round((split ",", (ReadingsVal("PowerwallDummy","Gridpower1","")))[0],0));
fhem ("set PowerwallDummy Solarpower1 " .(split ":", (ReadingsVal("PowerwallDummy","jasonInputAggregates","")))[75]);
fhem ("set PowerwallDummy Solarpower " .round((split ",", (ReadingsVal("PowerwallDummy","Solarpower1","")))[0],0));
fhem ("set PowerwallDummy Batterypower1 " .(split ":", (ReadingsVal("PowerwallDummy","jasonInputAggregates","")))[29]);
fhem ("set PowerwallDummy Batterypower " .round((split ",", (ReadingsVal("PowerwallDummy","Batterypower1","")))[0],0));
fhem ("set PowerwallDummy Housepower1 " .(split ":", (ReadingsVal("PowerwallDummy","jasonInputAggregates","")))[52]);
fhem ("set PowerwallDummy Housepower " .round(((split ",", (ReadingsVal("PowerwallDummy","Housepower1","")))[0])*(-1),0));
fhem ("set HomeBattery " .ReadingsVal("PowerwallDummy","Prozent",""));
}}
Hallo TimoD,
dank Deiner Hilfe habe ich es - endlich - auch zum Fliegen gebracht (Danke auch an ather).
Anmerkung: Die Quizaufgaben mit den Hochkommata war echt gut versteckt, ebenso die versteckte Auslassung von PowerwallDummy.......
Aber wir sind ja alle hier um zu Lernen :D
Also
1.) Anlage des Cookies
Hier war ein Leerzeichen zu viel, auch waren die Parenthesen und Hochkommata der Korrektur zum Opfer gefallen.
Richtig ist:
sudo su -s /bin/bash - fhem
curl -s -k -i -c /opt/fhem/cookie.txt -X POST -H "Content-Type: application/json" -d '{"username":"customer","password":"MeinPasswort","email":"meine@email.de","force_sm_off":false}' "https://192.168.1.1/api/login/Basic"
2. Der Tipp mit dem 2-Stufigen Anlegen des Notify war am Ende die Lösung. Im Code war dazu noch "HomeBattery" nicht richtig definiert:
PowerwallDummy:Update.* {if ("$EVTPART1" eq "1"){
my $b = qx(curl -s -k -b /opt/fhem/cookie.txt https://192.168.178.92/api/system_status/soe 2>&1);;
fhem("set PowerwallDummy jasonInput $b");
fhem ("set PowerwallDummy Prozent2 " .(split ":", (ReadingsVal("PowerwallDummy","jasonInput","")))[1]);
fhem ("set PowerwallDummy Prozent " .round((split "}", (ReadingsVal("PowerwallDummy","Prozent2","")))[0],1));}
elsif("$EVTPART1" eq "2"){
my $b = qx(curl -s -k -b /opt/fhem/cookie.txt https://192.168.178.92/api/meters/aggregates 2>&1);;
fhem("set PowerwallDummy jasonInputAggregates $b");
fhem ("set PowerwallDummy Gridpower1 " .(split ":", (ReadingsVal("PowerwallDummy","jasonInputAggregates","")))[6]);
fhem ("set PowerwallDummy Gridpower " .round((split ",", (ReadingsVal("PowerwallDummy","Gridpower1","")))[0],0));
fhem ("set PowerwallDummy Solarpower1 " .(split ":", (ReadingsVal("PowerwallDummy","jasonInputAggregates","")))[75]);
fhem ("set PowerwallDummy Solarpower " .round((split ",", (ReadingsVal("PowerwallDummy","Solarpower1","")))[0],0));
fhem ("set PowerwallDummy Batterypower1 " .(split ":", (ReadingsVal("PowerwallDummy","jasonInputAggregates","")))[29]);
fhem ("set PowerwallDummy Batterypower " .round((split ",", (ReadingsVal("PowerwallDummy","Batterypower1","")))[0],0));
fhem ("set PowerwallDummy Housepower1 " .(split ":", (ReadingsVal("PowerwallDummy","jasonInputAggregates","")))[52]);
fhem ("set PowerwallDummy Housepower " .round(((split ",", (ReadingsVal("PowerwallDummy","Housepower1","")))[0])*(-1),0));
fhem ("set PowerwallDummy HomeBattery " .ReadingsVal("PowerwallDummy","Prozent",""));
}}
Mann - bin ich froh dass das wieder geht ;-)
Kontrabass
Es gibt eine neue Version zum testen
https://forum.fhem.de/index.php/topic,78145.0.html
In dem Faden von CoolTux geht es weiter mit dem Modul.
Zu dem funktionierenden Workaround von TimoD noch eine Anmerkung, die natürlich hierher und nicht in den Modul-Faden gehören:
Nachdem Tesla die Firmware der Powerwall angepasst hat (gestern noch einmal) musste man den Cookie einfach nur erneuern.
Die JSON Auswertung muss man geringfügig anpassen, da einige Felder dazugekommen sind bzw. verändert wurden.
Bei mir sind die Spalten am Ende nun 6, 29, 52 und 75 für Gridpower1, Batterypower1, Housepower1 und Solarpower1.
vg, Christian aka Kontrabass