(Gelöst) Tesla Powerwall 2 AC Fehler 403

Begonnen von pnewman, 10 Februar 2021, 16:08:28

Vorheriges Thema - Nächstes Thema

pnewman

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
Raspberry Pi3B+ / Nano-Cul 868 - MAX!=Heizung, HM-Lan - Rollo+Licht, JeeLink-Clone 868 - LaCrosse, JeeLink-Clone 868 - PCA301, CUL 434 - IT-Steckdosen+Fernbedienung

CoolTux

Funktioniert denn das Modul bei Dir nicht?
Gibt doch eine API, da sollte so was drin beschrieben sein.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

twiederh

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.

CoolTux

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.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

pnewman

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
Raspberry Pi3B+ / Nano-Cul 868 - MAX!=Heizung, HM-Lan - Rollo+Licht, JeeLink-Clone 868 - LaCrosse, JeeLink-Clone 868 - PCA301, CUL 434 - IT-Steckdosen+Fernbedienung

twiederh

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)?

CoolTux

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.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Tester15

Der Powerwall verwendet seit letzter Woche Oauth v3 Autorisation.
https://github.com/vloschiavo/powerwall2/issues/41

pnewman

Raspberry Pi3B+ / Nano-Cul 868 - MAX!=Heizung, HM-Lan - Rollo+Licht, JeeLink-Clone 868 - LaCrosse, JeeLink-Clone 868 - PCA301, CUL 434 - IT-Steckdosen+Fernbedienung

Tester15

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



TimoD


CoolTux

Von mir leider nein. Komme die Tage nicht dazu etwas am Modul zu machen.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

TimoD

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?

CoolTux

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.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

TimoD

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

TimoD

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

CoolTux

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.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

ather

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 

Kontrabass

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....

pnewman

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
Raspberry Pi3B+ / Nano-Cul 868 - MAX!=Heizung, HM-Lan - Rollo+Licht, JeeLink-Clone 868 - LaCrosse, JeeLink-Clone 868 - PCA301, CUL 434 - IT-Steckdosen+Fernbedienung

CoolTux

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.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

TimoD

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,...

ather

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

CoolTux

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.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

ather

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ß

Wernieman

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)
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

ather

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



Kontrabass

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



CoolTux

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
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

ather

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

CoolTux

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.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Kontrabass

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

ather

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

TimoD

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",""));
}}

ather

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

Kontrabass

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

CoolTux

Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Kontrabass

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