alexa-cookie-service | [2026-05-14T19:28:03,005 Europe/Berlin] [INFO] Alexa-Cookie: Response (401)
alexa-cookie-service | [2026-05-14T19:28:03,007 Europe/Berlin] [INFO] Get User data Response: ""
alexa-cookie-service | [2026-05-14T19:28:03,007 Europe/Berlin] [ERROR] Alexa login flow failed: Unexpected end of JSON input... csrf=1481045025","csrf":"1481045025","dataVersion":2}
alexa-cookie-service | [2026-05-14T19:40:38,205 Europe/Berlin] [INFO] 127.0.0.1 - - [14/May/2026:17:40:38 +0000] "GET /healthz HTTP/1.1" 200 4449 "-" "-" Internals:
BUSY 0
DEF http://alexa-cookie-service:58080/api/status 300
FUUID 6a05fb1a-f33f-c628-f574-27055de8ff6d3b4b
Interval 300
MainURL http://alexa-cookie-service:58080/api/status
ModuleVersion 4.2.0 - 11.8.2023
NAME AlexaCookieService
NOTIFYDEV global
NR 45
NTFY_ORDER 50-AlexaCookieService
STATE ???
TYPE HTTPMOD
eventCount 12
value
CompiledRegexes:
HttpUtils:
NAME
addr http://alexa-cookie-service:58080
auth 0
buf
code 401
compress 1
conn
data
displayurl http://alexa-cookie-service:58080/api/status
header
host alexa-cookie-service
httpheader HTTP/1.1 401 Unauthorized
Cross-Origin-Opener-Policy: same-origin
Cross-Origin-Resource-Policy: same-origin
Origin-Agent-Cluster: ?1
Referrer-Policy: no-referrer
Strict-Transport-Security: max-age=31536000; includeSubDomains
X-Content-Type-Options: nosniff
X-DNS-Prefetch-Control: off
X-Download-Options: noopen
X-Frame-Options: SAMEORIGIN
X-Permitted-Cross-Domain-Policies: none
X-XSS-Protection: 0
Content-Type: application/json; charset=utf-8
Content-Length: 24
ETag: W/"18-XPDV80vbMk4yY1/PADG4jYM4rSI"
Date: Thu, 14 May 2026 17:48:27 GMT
Connection: close
httpversion 1.0
hu_blocking 0
hu_filecount 1
hu_port 58080
hu_portSfx :58080
ignoreredirects 1
loglevel 4
path /api/status
protocol http
redirects 0
timeout 8
url http://alexa-cookie-service:58080/api/status
sslargs:
QUEUE:
READINGS:
2026-05-14 19:48:27 LAST_REQUEST update
2026-05-14 19:48:27 MATCHED_READINGS error
2026-05-14 19:48:27 UNMATCHED_READINGS ok updatedAt ageHours hasCookie hasRefreshToken proxyUrl message
2026-05-14 19:48:27 error Unauthorized
2026-05-14 19:39:56 message Please open http://192.168.178.188:58090/ with your browser and login to Amazon. The cookie will be output here after successfull login.
2026-05-14 19:39:56 proxyUrl http://192.168.178.188:58090/
REQUEST:
context reading
data
header
ignoreredirects 0
num unknown
retryCount 0
type update
url http://alexa-cookie-service:58080/api/status
defptr:
readingBase:
error reading
message reading
proxyUrl reading
readingNum:
error 08
message 07
proxyUrl 06
readingOutdated:
requestReadings:
get01:
error reading 08
message reading 07
proxyUrl reading 06
update:
error reading 08
Attributes:
get01Header1 x-auth-token: %%ACS_TOKEN%%
get01Name loginUrl
get01URL http://alexa-cookie-service:58080/api/cookie/login/url
reading01JSON ok
reading02JSON updatedAt
reading03JSON ageHours
reading04JSON hasCookie
reading05JSON hasRefreshToken
reading06JSON proxyUrl
reading07JSON message
reading08JSON error
replacement01Mode key
replacement01Regex %%ACS_TOKEN%%
replacement01Value alexa_cookie_service_token
replacement02Mode key
replacement02Regex %%ACS_EXPORT_NAME%%
replacement02Value alexa_cookie_service_export_name
room Amazon
set01Data {}
set01Header1 x-auth-token: %%ACS_TOKEN%%
set01Header2 Content-Type: application/json
set01Method POST
set01Name loginStart
set01NoArg 1
set01ParseResponse 1
set01URL http://alexa-cookie-service:58080/api/cookie/login/start
set02Data {}
set02Header1 x-auth-token: %%ACS_TOKEN%%
set02Header2 Content-Type: application/json
set02Method POST
set02Name refresh
set02NoArg 1
set02ParseResponse 1
set02URL http://alexa-cookie-service:58080/api/cookie/refresh?save=%%ACS_EXPORT_NAME%%
showError 1
showMatched 1
timeout 8yml: networks:
fhem-net:
external: true
services:
alexa-cookie-service:
image: ghcr.io/fhem/alexa-cookie-service:0.3.0
container_name: alexa-cookie-service
volumes:
- ./alexa-cookie-data:/data
- ./fhem/cache/alexa-cookie:/opt/fhem/cache/alexa-cookie
environment:
BASE_AMAZON_PAGE: amazon.com
REFRESH_MIN_AGE_HOURS: 6
COOKIE_EXPORT_DIR: /opt/fhem/cache/alexa-cookie
STATE_FILE: /data/alexa-registration.json
SETUP_PROXY: true
METADATA_FILE: /data/service-metadata.json
DEBUG_HTML_DIR: /data/debug-html
APP_NAME: FHEM EchoDevice Cookie Service
TZ: Europe/Berlin
PROXY_ONLY: true
PROXY_PORT: 58090
AMAZON_PAGE: amazon.de
PROXY_LISTEN_BIND: 0.0.0.0
USE_HERMES: false
REQUEST_TIMEOUT_MS=: 30000
LOG_LEVEL: combined
AUTH_TOKEN: xxx
HOST: 0.0.0.0
PORT: 58080
DATA_DIR: /data
PROXY_PUBLIC_HOST: 192.168.178.188
REFRESH_SCHEDULE_HOURS: 24
ACCEPT_LANGUAGE: de-DE
ports:
- '58090:58090'
networks:
- fhem-net
restart: unless-stopped
user: '6061:6061'Undset AlexaCookieService storeKeyValue alexa_cookie_service_export_name 45result.jsonhabe ich gesetzt.Zitat von: MadMax am 07 Dezember 2025, 14:19:20........habe ich folgende Readings hinzugefügt.
Code Auswählen ErweiternBAT_Lower_discharge_limit : Untere Grenze des Tiefentladeschutzbereichs vor Abschaltung
BAT_backup_power_area : Minimale Breite des Ersatzstrombereichs
BAT_deep_discharge_protection_area : Minimale Breite des Tiefentladeschutzbereichs
BAT_inv_BAT_conserving_battery_state_of_charge_area : Breite des Bereichs zur Erhaltung des Batterieladezustands
Diese werden immer mit dem Parametern abgefragt, hierzu ist aber der installer Zugang nötig und es muss das Attribut installerLogin auf 1 gesetzt werden.
Bei mir läuft es mit einem SPT8.0SE und einem SBS2.5.
und check dann bitte die Version ins normale FHEM-Update um diese Version dann für alle per FHEM-Update bereit zu stellen.
avg_power_lastminutes_05 147
avg_power_lastminutes_10 147
avg_power_lastminutes_15 147
background_processing_time 0.7435
bat_capacity 99
bat_deep_discharge_protection_area 2 ###############
bat_idc 0.438
bat_idc_a 0.438
bat_idc_b 0
bat_idc_c 0
bat_inv_BAT_conserving_battery_state_of_charge_area 2 ############
bat_loadtoday 1.437
bat_loadtotal 1.502
bat_lower_discharge_limit 2 ############
bat_rated_capacity 16
bat_residual_cap 15840
bat_status Ok
bat_temp 16.5
bat_temp_a 16.5
bat_udc 409.5
bat_udc_a 409.5
bat_udc_b 309.95
bat_udc_c 0.19
bat_unloadtoday 14.692
bat_unloadtotal 6000000000.91
chargestatus 63
cosphi 0.010
device_class Batterie-Wechselrichter
device_dc_insulation 3000000
device_dc_residual_current 0.011
device_firmware 4.7.31 R
device_name SN: 3xxxxxxxx
device_status Ok
device_type SBS3.7-1VL-10 (Sunny Boy Storage 3.7)
etoday 14000000.702
etotal 60000001.161
feed-in_time 1162.76
general_operating_status Eingeschaltet
grid_freq 49.98
gridrelay_status geschlossen
inverter_processing_time 0.7005
modulstate normal
operation_time 1689.67
opertime_start 14.05.26 04:59
opertime_stop 14.05.26 21:51
pac_max_phase_1 3.68
pac_max_phase_2 0
pac_max_phase_3 0
phase_1_iac 0.83
phase_1_pac 0.147
phase_1_uac 232.28
power_in 537
power_out 0
serial_number 3xxxxxxxxx
state 0.147
susyid sss - SN: 3xxxxxxxxxx
total_pac -0.537
Zitat von: DS_Starter am 13 Mai 2026, 19:39:37@Markus, @300P,Habe es wie folgt codiert in ctrlUserExitFn:Zitatconsumer01 Heizstab 3kW (swprio=100).Wie 300P schon gefolgert hat, müßte man diese Logik über ctrlUserExitFn unterstützen. Für eine Logik wäre das Setup etwa so.
consumer02-05 heater je 1000W (swprio=50).
Im Winter wenn morgens die Sonne aufgeht erwartetes Verhalten:
surplus 1000W -> consumer02 schaltet ein.
Anschließend zusätzlich surplus 1000W -> consumer 03 schaltet ein (Gesamtüberschuss (surplus + eingeschaltetete consumer) 2000W).
Weitere 1000W surplus-> consumer 04 schaltet ein (Gesamtüberschuss 3000W). usw.
Dann würde den ganzen Tag consumer02-05 mit niedriger prio an sein, und consumer01 mit höchster prio gar nicht zum Zug kommen ?
Erwartung wäre dass bei einem Gesamtüberschuss von 3000W, dann auf consumer01 mit höchster Prio umgeschaltet wird und die consumer mit niedriger prio dafür ausgeschaltet werden.
Definiert sind die Consumer ohne exclgroup, aber mit swprio (02-05 könnte gleich sein, aber ich würde die Reihenfolge mal vorsehen):
consumer01 Heizstab 3000W -> swprio=100, locktime=300
consumer02 heater 1000W -> swprio=50, locktime=300
consumer03 heater 1000W -> swprio=40, locktime=300
consumer04 heater 1000W -> swprio=30, locktime=300
consumer05 heater 1000W -> swprio=20, locktime=300
Wenn zum Start des Tages der Überschuß ansteigt, schalten die consumer 02 bis 05 nacheinander an, da der Überschuß langsam steigt. Sollte er schnell auf über 3000W steigen und noch nicht alle 02-05 an sein, schaltet consumer01 an wegen der höheren prio! Muß man sehen ob das realistisch ist.
Wenn also insgesamt 4000W Überschuß vorhanden ist, sind die consumer 02-05 on und verbrauchen den Überschuß obwohl der Überschuß jetzt reichen würde um consumer01 und ggf. noch einen anderen consumer zu betreiben.
Eine Lösung wäre in ctrlUserExitFn eine kleine Logik zu bauen:
1. prüfe ob alle consumer 02-05 (evtl. 02-04) "on" sind
2. wenn ja, ist eigentlich genügend Überschuß vorhanden um consumer01 zu bereiben -> dann
3. schalte über die entsprechenden Befehle die consumer 02-05 (02-04) aus!
Dh. in diesem Fall werden durch die Logik ctrlUserExitFn alle consumer 02-05 (02-04) am Ende des SF-Zyklus ausgeschaltet sein, der PV-Überschuß wird frei.
Im nächsten Zyklus wird consumer01 aktiviert da genügend PV Überschuß vorhanden ist und er die höchste Prio hat. Damit nicht gleicht einer der consumer 02-05 dazu kommt, haben alle locktime von 5 Minuten nach dem Ausschalten gesetzt.
Sollte die PV nach unten gehen, wird consumer01 unterbrochen und die anderen 02-05 werden beim Hochlauf der PV wieder aktiviert bis die Logik in ctrlUserExitFn wieder greift, die C 02-05 abschaltet und dann consumer01 wieder fortsetzt da ja genug PV vorhanden.
Wenn das Verfahren gefällt, muß man es nur noch in Perl kodieren und testen.
LG,
Heiko
{
my $sumPower =
ReadingsNum($name,"Current_Surplus",0)
+ ReadingsNum($name,"consumer02_currentPower",0)
+ ReadingsNum($name,"consumer03_currentPower",0)
+ ReadingsNum($name,"consumer04_currentPower",0)
+ ReadingsNum($name,"consumer05_currentPower",0);
storeReading ('userFn_sumPower', $sumPower);
## consumer01=RutenbIP4_Out1 mit swprio=100 soll durch Ausschalten der Verbraucher mit niedriger Prio eingeschaltet werden:
if ($sumPower > 3000 && ReadingsVal("RutenbIP4_Out1","state","off") eq "off") {
fhem("set Shelly_UG_1 off; set Shelly_EG_1 off; set Shelly_EG_2 off; set Shelly_DG_1 off");
fhem("sleep 60; set SF01 consumerNewPlanning 02, set SF01 consumerNewPlanning 03,set SF01 consumerNewPlanning 04, set SF01 consumerNewPlanning 05");
Log 3, "Schalte consumer02-0x AUS: sumPower =$sumPower";
}
}
2026.05.14 15:38:10 3: GoveeLAN (govee_bridge): Bridge v2.0 gestartet
2026.05.14 15:37:38 1: PERL WARNING: Prototype mismatch: sub main::CommandAttr ($$) vs none at ./FHEM/98_GoveeLAN.pm line 64.
2026.05.14 15:37:38 1: PERL WARNING: Prototype mismatch: sub main::CommandDefine ($$) vs none at ./FHEM/98_GoveeLAN.pm line 64.
2026.05.14 15:37:38 1: PERL WARNING: Prototype mismatch: sub main::ReadingsNum ($$$;$) vs none at ./FHEM/98_GoveeLAN.pm line 63.
2026.05.14 15:37:38 1: PERL WARNING: Prototype mismatch: sub main::ReadingsVal ($$$) vs none at ./FHEM/98_GoveeLAN.pm line 63.
2026.05.14 15:37:38 1: PERL WARNING: Prototype mismatch: sub main::AttrVal ($$$) vs none at ./FHEM/98_GoveeLAN.pm line 63.
2026.05.14 15:37:38 1: PERL WARNING: Prototype mismatch: sub main::RemoveInternalTimer ($;$) vs none at ./FHEM/98_GoveeLAN.pm line 62.
2026.05.14 15:37:38 1: PERL WARNING: Prototype mismatch: sub main::InternalTimer ($$$;$) vs none at ./FHEM/98_GoveeLAN.pm line 62.
2026.05.14 15:37:38 1: PERL WARNING: Prototype mismatch: sub main::readingsEndUpdate ($$) vs none at ./FHEM/98_GoveeLAN.pm line 61.
2026.05.14 15:37:38 1: PERL WARNING: Prototype mismatch: sub main::readingsBulkUpdate ($$$@) vs none at ./FHEM/98_GoveeLAN.pm line 61.
2026.05.14 15:37:38 1: PERL WARNING: Prototype mismatch: sub main::readingsBeginUpdate ($) vs none at ./FHEM/98_GoveeLAN.pm line 60.
2026.05.14 15:37:38 1: PERL WARNING: Prototype mismatch: sub main::readingsSingleUpdate ($$$$;$) vs none at ./FHEM/98_GoveeLAN.pm line 60.
2026.05.14 15:37:38 1: PERL WARNING: Prototype mismatch: sub main::Log3 ($$$) vs none at ./FHEM/98_GoveeLAN.pm line 59.
2026.05.14 15:37:38 1: PERL WARNING: Prototype mismatch: sub main::to_json ($@) vs ($) at /usr/share/perl/5.28/Exporter.pm line 66.
2026.05.14 15:37:38 1: PERL WARNING: Prototype mismatch: sub main::from_json ($@) vs ($) at /usr/share/perl/5.28/Exporter.pm line 66.
2026.05.14 15:37:38 1: PERL WARNING: Prototype mismatch: sub main::decode_json ($;$$) vs none at /usr/share/perl/5.28/Exporter.pm line 66.
2026.05.14 15:37:38 1: PERL WARNING: Prototype mismatch: sub main::encode_json ($;$) vs ($) at /usr/share/perl/5.28/Exporter.pm line 66.