Neueste Beiträge

#11
Server - Linux / Aw: [Docker / Container] echod...
Letzter Beitrag von FlatTV - 14 Mai 2026, 19:36:57
Ich bekomme kein Cookie.
Der Login auf der Amazon Webseite meldet zwar ,,success" und im Log werden auch ohne Ende Daten ausgetauscht, am Ende aber dann:
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

Kann ich da irgendwie debuggen?

Ah, jetzt ist es ohne Fehler durchgelaufen
... 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 "-" "-"

Gespeichert wird aber nichts, irgendwas ist da noch falsch?!

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    8
yml:
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'
Und
set AlexaCookieService storeKeyValue alexa_cookie_service_export_name 45result.jsonhabe ich gesetzt.

#12
FHEMWEB / Aw: FW_okDialog wird durch Nav...
Letzter Beitrag von phys1 - 14 Mai 2026, 19:26:14
Hallo,

ich habe das Verhalten etwas genauer untersucht:
Nach einem "set <device> <reading>" scheint fhemweb.js mittels FW_queryValue:{ReadingsVal(<device>,<reading>,"")} dessen Wert anzufordern, sofern <reading> noch NICHT im DeviceOverview gelistet ist. Daraufhin wird die Seite neu geladen, was wiederum eine modale TextBox sofort beendet.
Ist <reading> bereits im Device vorhanden, passiert das nicht und die TextBox bleibt sichtbar.

Bei meinem DOIF führe ich den benannten Block, der FW_directNotify / FW_okDialog aufruft, mit "set <DOIF-device> <Blockname>" aus.
fhemweb.js fordert sodann FW_queryValue:{ReadingsVal(<DOIF-device>,<Blockname>,"")} an, da das DOIF kein Reading namens <Blockname> hat. Es wird, wie oben beschrieben, die TextBox sofort beendet. Es funktioniert aber, wenn der Block keinen vom Nutzer spezifizierten Namen hat, d.h. z.B. block_01. Ein solches Reading legt das DOIF automatisch an und die modale TextBox wird angezeigt. Wenn man den Mechanismus mal verstanden hat, lässt sich also leicht ein Workaround finden.

Viele Grüße
#13
FHEMapp / Aw: Icons für Button nur aus m...
Letzter Beitrag von Himbi777 - 14 Mai 2026, 19:07:28
Soweit ich weiß, gehen nur die mdi icons

Gruß Gerhard
#14
Solaranlagen / Aw: 76_SolarForecast - Informa...
Letzter Beitrag von 300P - 14 Mai 2026, 18:41:14
Ich würde : (ohne Batteriebetrachtung dabei)

  Wenn C01 nicht aktiv / nicht AN ist und wenn die Einspeisung >= 500 UND die C02-05 mehr als 3.000 Watt verbrauchen (dürften).
  Nur wirklich dann:
  schalte alle C02-C05 AUS (Logeintrag extern ausgeschaltet erfolgt)
  dann sollte der C1 sich automatisch nach XX sek. "selber einschalten. (Locktime vernünftig einstellen !!! z.B. locktime=30:30)  = schnell AN /  kürzer noch AN bleiben als die anderen 1.000 W Consumer...
  danach Newplaning C02-C05 ->> damit sie wieder einschalten könnten wenn es sein soll. ( wie oben ->> z.B. locktime=60:15)  Langsamer AN / kürzer noch AN bleiben

Wenn dann am Morgenverlauf mehr/weniger erzeugt wird schalten sich die C02-C05 (auch der C01) automatisch wieder ab / an......

Eventuell kannst du ja noch interruptable=1 im attr der C02-C05 sinnvoll nutzen (auch im C01)
#15
Sonstige Systeme / Aw: 76_SMAInverter.pm - Abfrag...
Letzter Beitrag von 300P - 14 Mai 2026, 17:08:07
Zitat von: MadMax am 07 Dezember 2025, 14:19:20........habe ich folgende Readings hinzugefügt.
Code Auswählen Erweitern
BAT_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.


@Mad_Max - @alle

Mit der beiliegenden Version V2.30.3 vom 14.05.206 habe ich diese Reading auch für die SBS 3.7 / 5.0 / 5.0 verfügbar gemacht.

Prüf es einmal gegen  ;) und check dann bitte die Version ins normale FHEM-Update um diese Version dann für alle per FHEM-Update bereit zu stellen. ;D

Gruß und Danke
300P



Nachsatz:
Hier alle Werte die im 3.7 damit sichtbar sind ===>>>######### = neue Werte

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
#16
Solaranlagen / Aw: 76_SolarForecast - Informa...
Letzter Beitrag von lorisurfen - 14 Mai 2026, 16:57:52
Zitat von: DS_Starter am 13 Mai 2026, 19:39:37@Markus, @300P,

Zitatconsumer01 Heizstab 3kW (swprio=100).
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.
Wie 300P schon gefolgert hat, müßte man diese Logik über ctrlUserExitFn unterstützen. Für eine Logik wäre das Setup etwa so.

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

Habe es wie folgt codiert in ctrlUserExitFn:
Wenn es noch Anregungen/Verbesserungsvorschläge gibt gerne Rückmeldung.
Am Ende habe ich nach Ausschalten noch das consumerNewPlanning hinzugefügt, da vermutlich analog ausschalten extern die consumer02-05 sonst nicht wieder eingeschaltet werden.
{
  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";
    }
}
#17
FHEM Code changes / Revision 31230: 76_SolarForeca...
Letzter Beitrag von System - 14 Mai 2026, 16:10:32
Revision 31230: 76_SolarForecast: Version 2.6.9

76_SolarForecast: Version 2.6.9

Source: Revision 31230: 76_SolarForecast: Version 2.6.9
#18
MQTT / Aw: Govee2mqtt (Govee LAN API)...
Letzter Beitrag von Mumpitz - 14 Mai 2026, 16:06:17
coole Sache, es hat bei mir auf anhieb funktioniert. FHEMLog zeigte jedoch folgende Meldung nach dem aktivieren des Moduls:

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.

Ist das ein Problem?

Weitere Frage. Ist es möglich, aus FHEM heraus z.B. einen Sonnenuntergang mit einem Dimm down von z.B. 30min zu starten?
#19
FHEM Code changes / Revision 31229: 76_SolarForeca...
Letzter Beitrag von System - 14 Mai 2026, 15:00:26
Revision 31229: 76_SolarForecast: Version 2.6.9

76_SolarForecast: Version 2.6.9

Source: Revision 31229: 76_SolarForecast: Version 2.6.9
#20
Solaranlagen / Aw: 76_SolarForecast - Informa...
Letzter Beitrag von DS_Starter - 14 Mai 2026, 14:55:06
Ich habe den Drift-Block im Dashboard neu strukturiert, Übersetzungen für technische Sachverhalte eingefügt und den Erläuterungsblock für Driftwerte erweitert.

Update liegt im contrib.

Edit: zur Erinnerung ... die Auswertung kann man sich auch mit "get ... valDecTree aiNeuralNetConState" ausgeben lassen.