Hauptmenü

Neueste Beiträge

#1
Solaranlagen / Aw: Modul für Ecoflow-Komponen...
Letzter Beitrag von Stefan6183 - 30 Dezember 2025, 21:20:26
Ok, also verstehe ich das richtig, dass ich die Meldung "current device is not allowed to get device info" ignorieren kann?

Aber sollte bei Ecoflow_DetectModel(): Model "" detected nicht Model "POWEROCEAN" stehen?
Das Ecoflow Device bietet mir nämlich keine gerätespezifischen get und set Kommandos an.
Bei get z.B. nur get AccessKey, get SerialNo und get devices.
#2
Sonstige Systeme / Aw: Support-Thread Modul 36_Sh...
Letzter Beitrag von Starkstrombastler - 30 Dezember 2025, 21:15:57
Zitat von: Bartimaus am 30 Dezember 2025, 18:50:38S4PL-00416EU
Damit ist das Teil identifiziert und ist mit dem morgigen Update verfügbar.
#3
DOIF / DOIF für kleine mini Alarmanla...
Letzter Beitrag von mfeske - 30 Dezember 2025, 21:15:42
Hallo zusammen, ich habe mein Projekt ,,Alarmanlage" weiterverfolgt und bin auf einem guten Weg.
Ich habe ein dummy Alarm_Status worüber ich den Status der Alarmanlage über die Anwesenheit bzw. den dummy Alarm_Taster steuere.
Status
0 es ist jemand zu Hause unscharf
1 manuell unscharf
2 manuell scharf
3 es ist niemand zu Hause scharf

Ich Werte verschiedene Kontakte mit einem DOIF Alarm_Kontakte_DOIF aus. Das DOIF sendet auch die erwarteten pushmsg.
State sind alle geschlossen bzw.

Ich wollte dann mit dem DOIF Alarm_send_DOIF ggf. einen Alarm auslösen, wenn Alarm_Kontakte_DOIF nicht ,,sind alle geschlossen" und Alarm_Taster 2 oder 3 ist. Dazu sollten mehrere Befehle ausgeführt werden, welcher jeder für sich schon funktioniert.
1. set FHEM_gong_Mp3 playTone 254,016
2. set LED_aussen on,set LED blink 30 2
3. set pushmsg msg Alarm ausgelöst! Mindestens ein Kontakt ist offen.
4. set Rolladen01 down
5. set Rolladen02 down
6. set Rauchmelder_Team alarmOn
Am besten wären wenn 1-3 mit einer Verzögerung vom 60 Sekunden einsetzen würde und 5-6 mit 120 Sekunden; sobald Alarm_Status 0 oder 1 ist soll abgebrochen werden. Bei 3 wäre auch das ,, set pushmsg msg "Kontakt $DEVICE wurde geöffnet. Es sind folgende Kontakte offen: [@"_Alarm$":state:"open"]"" wünschenswert aber das hat mit der Syntax gar nicht funktioniert. Das DOIF wie es jetzt ist löst nicht aus. Ich hatte es auch mit der KI probiert aber auch mit der bin ich nicht zum Ziel gekommen.


List Alarm_Status
Internals:
   FUUID      67807828-f33f-be1a-6f3e-56d9bde8e61ee267
   NAME       Alarm_Status
   NR         68
   STATE      3
   TYPE       dummy
   eventCount 51
   READINGS:
     2025-12-30 17:49:55   state           3
Attributes:
   room       AppleWatch,Alarmanlage

List Alarm_Taster
Internals:
   FUUID      67816ae7-f33f-be1a-7c06-39d56c9a9d1ba135
   NAME       Alarm_Taster
   NR         69
   STATE      off
   TYPE       dummy
   eventCount 44
   READINGS:
     2025-12-30 16:27:48   state           off
Attributes:
   alexaName  Alarmanlage Taster
   devStateIcon on:15px-red off:15px-green
   room       Alexa,Alarmanlage,AppleWatch
   setList    on off

List Alarm_Kontakte_DOIF
Internals:
   DEF        ([#"_Alarm$:open":state:"open"] != 0) (set pushmsg msg "Kontakt $DEVICE wurde geöffnet. Es sind folgende Kontakte offen: [@"_Alarm$":state:"open"]")
DOELSEIF
([#"_Alarm$:closed":state:"open"] == 0) (set pushmsg msg "alle Kontakte geschlossen")
   FUUID      678d3cd1-f33f-be1a-c7f2-dad1fd51a7b4aa33
   MODEL      FHEM
   NAME       Alarm_Kontakte_DOIF
   NOTIFYDEV  global,.*(_Alarm$).*
   NR         78
   NTFY_ORDER 50-Alarm_Kontakte_DOIF
   STATE      alle geschlossen
   TYPE       DOIF
   VERSION    30659 2025-12-25 12:37:16
   eventCount 23
   READINGS:
     2025-12-30 17:48:02   Device          Aussentuer_Strasse_Alarm
     2025-12-30 17:48:02   cmd             2
     2025-12-30 17:48:02   cmd_event       Aussentuer_Strasse_Alarm
     2025-12-30 17:48:02   cmd_nr          2
     2025-12-30 15:11:55   mode            enabled
     2025-12-30 17:48:02   state           alle geschlossen
   Regex:
     accu:
     bar:
     barAvg:
     collect:
     cond:
       :
         0:
           "_Alarm$:open" _Alarm$:open
         1:
           "_Alarm$:closed" _Alarm$:closed
   attr:
     cmdState:
       0:
         $DEVICE zuletzt geöffnet
       1:
         alle geschlossen
     wait:
     waitdel:
   condition:
     0          ::AggregateDoIf($hash,'#','_Alarm$','state','"open"') != 0
     1          ::AggregateDoIf($hash,'#','_Alarm$','state','"open"') == 0
   do:
     0:
       0          set pushmsg msg "Kontakt $DEVICE wurde geöffnet. Es sind folgende Kontakte offen: [@"_Alarm$":state:"open"]"
     1:
       0          set pushmsg msg "alle Kontakte geschlossen"
     2:
   helper:
     NOTIFYDEV  global,.*(_Alarm$).*
     event      closed,STATE: closed,hmstate: closed
     globalinit 1
     last_timer 0
     sleeptimer -1
     timerdev   Aussentuer_Strasse_Alarm
     timerevent closed,STATE: closed,hmstate: closed
     triggerDev Aussentuer_Strasse_Alarm
     timerevents:
       closed
       STATE: closed
       hmstate: closed
     timereventsState:
       state: closed
       STATE: closed
       hmstate: closed
     triggerEvents:
       closed
       STATE: closed
       hmstate: closed
     triggerEventsState:
       state: closed
       STATE: closed
       hmstate: closed
   internals:
   readings:
   trigger:
   uiState:
   uiTable:
Attributes:
   cmdState   $DEVICE zuletzt geöffnet|alle geschlossen
   do         always
   room       Alarmanlage

List Alarm_send_DOIF
Internals:
   CFGFN     
   DEF        (([Alarm_Status:STATE] eq "2" or [Alarm_Status:STATE] eq "3") and (#"_Alarm$":state:"open" > 0)) (set FHEM_gong_Mp3 playTone 254,016,set LED_aussen on,set LED blink 30 2,set pushmsg msg Alarm ausgelöst! Mindestens ein Kontakt ist offen.,set Rolladen01 down,set Rolladen02 down,set Rauchmelder_Team alarmOn) DOELSEIF ([Alarm_Status:STATE] eq "0" or [Alarm_Status:STATE] eq "1") (cancel)

   FUUID      6953e764-f33f-be1a-da62-f7aba6284e6e4660
   MODEL      FHEM
   NAME       Alarm_send_DOIF
   NOTIFYDEV  global,Alarm_Status
   NR         191
   NTFY_ORDER 50-Alarm_send_DOIF
   STATE      initialized
   TYPE       DOIF
   VERSION    30659 2025-12-25 12:37:16
   eventCount 10
   READINGS:
     2025-12-30 16:24:58   cmd             0
     2025-12-30 16:24:58   mode            enabled
     2025-12-30 16:24:58   state           initialized
   Regex:
     accu:
     bar:
     barAvg:
     collect:
     cond:
       Alarm_Status:
         0:
           STATE      ^Alarm_Status$:^STATE:
         1:
           STATE      ^Alarm_Status$:^STATE:
   attr:
     cmdState:
       0:
         {(ReadingsVal("Alarm_Status","STATE","0") eq "2" || ReadingsVal("Alarm_Status","STATE","0") eq "3") ? ((::AggregateDoIf($hash,"#","_Alarm$","state","\"open\"") > 0) ? "alarm" : "armed") : ((ReadingsVal("Alarm_Status","STATE","0") eq "0" || ReadingsVal("Alarm_Status","STATE","0") eq "1") ? "idle" : "disabled")}
     repeatsame:
       0
     wait:
       0:
         60
         120
   condition:
     0          (::ReadingValDoIf($hash,'Alarm_Status','STATE') eq "2" or ::ReadingValDoIf($hash,'Alarm_Status','STATE') eq "3") and (#"_Alarm$":state:"open" > 0)
     1          ::ReadingValDoIf($hash,'Alarm_Status','STATE') eq "0" or ::ReadingValDoIf($hash,'Alarm_Status','STATE') eq "1"
   do:
     0:
       0          set FHEM_gong_Mp3 playTone 254,016,set LED_aussen on,set LED blink 30 2,set pushmsg msg Alarm ausgelöst! Mindestens ein Kontakt ist offen.,set Rolladen01 down,set Rolladen02 down,set Rauchmelder_Team alarmOn
     1:
       0          cancel
     2:
   helper:
     NOTIFYDEV  global,Alarm_Status
     globalinit 1
     last_timer 0
     sleeptimer -1
   hmccu:
   readings:
     all         Alarm_Status:STATE
   uiState:
   uiTable:
Attributes:
   cmdState   {(ReadingsVal("Alarm_Status","STATE","0") eq "2" || ReadingsVal("Alarm_Status","STATE","0") eq "3") ? ((::AggregateDoIf($hash,"#","_Alarm$","state","\"open\"") > 0) ? "alarm" : "armed") : ((ReadingsVal("Alarm_Status","STATE","0") eq "0" || ReadingsVal("Alarm_Status","STATE","0") eq "1") ? "idle" : "disabled")}
   devStateIcon alarm:message_attention
armed:secur_open
idle:security
disabled:control_pause
   do         always
   repeatsame 0
   room       Alarmanlage
   selftrigger wait
   wait       60,120

List Alarm_send_DOIF KI
define Alarm_send_DOIF DOIF (
  ([Alarm_Status:STATE] =~ "^(2|3)$")
  and
  ([Alarm_Kontakte_DOIF] ne "closed")
)
(
  set FHEM_gong_Mp3 playTone 254,016,
  set LED_aussen on,
  set LED blink 30 2,
  set pushmsg msg "Alarm ausgelöst! Kontakt $DEVICE wurde geöffnet. Offene Kontakte: [@"_Alarm$":state:"open"]",
  set Rolladen01 down,
  set Rolladen02 down,
  set Rauchmelder_Team alarmOn
)
DOELSEIF (
  ([Alarm_Status:STATE] =~ "^(0|1)$")
)
(
  cancel
)

mit
attr Alarm_send_DOIF wait 60,120
attr Alarm_send_DOIF do always
attr Alarm_send_DOIF selftrigger
attr Alarm_send_DOIF repeatsame 0


vielleicht könnt ihr mir ja weiterhelfen, die KI ist dafür offensichtlich noch nicht bereit.

Gruß
Micha
#4
Heizungssteuerung/Raumklima / Aw: Neues Modul Heizungssteuer...
Letzter Beitrag von stelo - 30 Dezember 2025, 21:09:26
Hi Stefan,
für Buster kann man leider keine Pakete mehr updaten/installieren. Die Paketquellen sind nicht mehr erreichbar. Ich habe aber eine Anleitung gefunden auf Bullseye upzugraden.
Nach der Installation von ser2net habe ich dann nach einigen Probieren ein Device opened mit dem ersten KMS-Reading bekommen :-) Echt cool!

Jetzt geht es an die Visualisierung der Temperaturverläufe und Aktivität der Pumpen, wobei ich da aber noch nicht viel Erfahrung habe.

Könntest Du mir vielleicht deine Visualisierung zur Verfügung stellen? Das wäre toll.

Danke und Grüße,
Stefan
#5
Sonstige Systeme / Aw: Support-Thread Modul 36_Sh...
Letzter Beitrag von Prof. Dr. Peter Henning - 30 Dezember 2025, 20:56:43
Zitat von: Bartimaus am 30 Dezember 2025, 18:50:38Ich hoffe Ihr könnt mir helfen, ansonsten muss ich diese Leiste leider zurückschicken. Wär schade drum.
ich sehe da noch eine dritte Möglichkeit, nämlich selbst soviel zu lernen, dass man das mit MQTT steuern kann.

LG

pah
#6
Multimedia / Aw: [Neues Modul] BOSE SoundTo...
Letzter Beitrag von FlatTV - 30 Dezember 2025, 20:43:33
Also ich mach mir am meisten sorgen mit der Alexa Integration.
Ich habe es bisher nicht hinbekommen, den Lautsprecher als Speaker im Alexa Connector zu integrieren.
#7
Solaranlagen / Aw: 76_SolarForecast - Informa...
Letzter Beitrag von DS_Starter - 30 Dezember 2025, 20:33:46
ZitatDass eine vereinfachte Regexprüfung der Grund für die Verschiebbarkeit des berücksichtigten Zeitintervallendes von bis zu 20 Stunden ist, das hätte ich nicht gedacht.
Darum geht es nicht. Die angegebene Stunde wird als Absolutzeit (z.B. 20 Uhr) oder Relativzeit (z.B. -5) Stunden zum Sonnenuntergang interpretiert. D.h. "-" ist immer relativ und _vor_ Sonnenuntergang. Da der Wertebereich bis 20 (Uhr) laufen kann, ergibt sich rein theoretisch auch eine mögliche negative Verschiebung von -20 (Stunden).
Das es nicht sinnvoll ist versteht sich und ich traue unseren Usern soviel Verständnis zu den Wert adäquat zum Ziel zu setzen.
Der aktuelle Regex ist m.M. nach umfangreich genug und braucht keine weitere Steigerung wenn es nicht sein muß:
loadTarget   => { comp => '(?:100|[1-9]?\d)(?::-?(?:[1-9]|1[0-9]|20))?',
ZitatSelber würde ich mir z.B. -0:45h wünschen. Aber auch im Sommer würde ich persönlich nicht auf die Idee kommen, das berücksichtigte Zeitintervallende um mehr als 10:00h nach vorne zu verlegen.
Ich rechne im Stundenraster gemäß den allgemeinen Werteerhebungen im Modul. Mehr Aufwand würde ich nur treiben, wenn es unbedingt nötig ist. Meine aktuelle Liste an ToDo's im Modul ist lang und ich muß momentan Prioritäten setzen. (Zur Zeit total mit der 2.0.0 ausgelastet)

ZitatAuch frage ich mich, in welchen Fällen das berücksichtigte Zeitintervallende nach hinten verschoben werden sollte.
Hier liegt, glaube ich, ein Mißverständnis vor. Siehe oben.



#8
Solaranlagen / Aw: Modul für Ecoflow-Komponen...
Letzter Beitrag von KölnSolar - 30 Dezember 2025, 20:20:07
ZitatIch verwende bei meinem Developer Account die selbe Emailadresse und den selben Login wie in der EcoFlow App, wo die Seriennummern von Wechselrichter und Batterie korrekt erfasst sind.
...ist genau richtig und wichtig.
Zitat{"code":"0","message":"Success","data":[{"sn":"hierStehtMeineSeriennummer","online":1}],"eagleEyeTraceId":"","tid":""}
Also funktioniert es ja !
Und jetzt habe ich erst richtig hingeguckt:
Das set PowerOcean detectModel schreibt ins Log:
2025.12.30 18:13:25 3: PowerOcean(Ecoflow 0.3.9.0): Ecoflow_DetectModel(): Trying to detect model.
2025.12.30 18:13:25 2: PowerOcean(Ecoflow 0.3.9.0): Ecoflow_DetectModel(): Model "" detected.
2025.12.30 18:13:25 0: PowerOcean(Ecoflow 0.3.9.0): Ecoflow_DetectModel(): Modul initialised.
2025.12.30 18:13:26 0: PowerOcean(Ecoflow 0.3.9.0): Ecoflow_Response(): ERROR! {"code":"1006","message":"current device is not allowed to get device info","eagleEyeTraceId":"","tid":""}
ist leider eine irreführende "normale" Meldung beim Start des Moduls. Danach funktionieren alle Zugriffe.

Bitte demnächst Log-Auszüge in Code-Tags posten.  ;)

Grüße Markus
#9
Solaranlagen / Aw: Modul für Ecoflow-Komponen...
Letzter Beitrag von Stefan6183 - 30 Dezember 2025, 19:43:05
Wie kann ich denn bei EcoFlow das Gerät meinem Developer-Account zuordnen?
Ich verwende bei meinem Developer Account die selbe Emailadresse und den selben Login wie in der EcoFlow App, wo die Seriennummern von Wechselrichter und Batterie korrekt erfasst sind.

Hier ein Log mit verbose 5 vom "get devices" (ein paar sensible Daten habe ich verändert):
2025.12.30 19:33:13 5: PowerOcean(Ecoflow 0.3.9.0): Ecoflow_Get(): PowerOcean: $model =
2025.12.30 19:33:24 5: PowerOcean(Ecoflow 0.3.9.0): Ecoflow_Get(): PowerOcean: $model =
2025.12.30 19:33:24 5: PowerOcean(Ecoflow 0.3.9.0): Ecoflow_Get(): cmd = devices
2025.12.30 19:33:24 5: PowerOcean(Ecoflow 0.3.9.0): Ecoflow_Request(): Method = GET
2025.12.30 19:33:24 5: PowerOcean(Ecoflow 0.3.9.0): Ecoflow_Request(): $nonce=742945 $timestamp=1767119604670
2025.12.30 19:33:24 5: PowerOcean(Ecoflow 0.3.9.0): Ecoflow_Request(): $url = /iot-open/sign/device/list $query_str = accessKey=hierStehtMeinAccessKey&nonce=742945&timestamp=1767119604670
2025.12.30 19:33:24 5: PowerOcean(Ecoflow 0.3.9.0): Ecoflow_Request(): $sign = 7dfd2d1acd25b160333cverändert7d19c432ac2d71768veränderte67edc383
2025.12.30 19:33:24 5: PowerOcean(Ecoflow 0.3.9.0): Ecoflow_Response(): $url = https://api-e.ecoflow.com/iot-open/sign/device/list
2025.12.30 19:33:24 5: PowerOcean(Ecoflow 0.3.9.0): Ecoflow_Response(): $data = {"code":"0","message":"Success","data":[{"sn":"hierStehtMeineSeriennummer","online":1}],"eagleEyeTraceId":"","tid":""}
2025.12.30 19:33:24 5: PowerOcean(Ecoflow 0.3.9.0): Ecoflow_Response(): code = 0
2025.12.30 19:33:24 5: PowerOcean(Ecoflow 0.3.9.0): Ecoflow_Response(): data_1_online = 1
2025.12.30 19:33:24 5: PowerOcean(Ecoflow 0.3.9.0): Ecoflow_Response(): data_1_sn = hierStehtMeineSeriennummer
2025.12.30 19:33:24 4: PowerOcean(Ecoflow 0.3.9.0): Ecoflow_Response(): data_1_sn : Comparing SerialNo hierStehtMeineSeriennummer
2025.12.30 19:33:24 5: PowerOcean(Ecoflow 0.3.9.0): Ecoflow_Response(): $base = data_1
2025.12.30 19:33:24 4: PowerOcean(Ecoflow 0.3.9.0): Ecoflow_Response():
2025.12.30 19:33:24 5: PowerOcean(Ecoflow 0.3.9.0): Ecoflow_Response(): eagleEyeTraceId =
2025.12.30 19:33:24 5: PowerOcean(Ecoflow 0.3.9.0): Ecoflow_Response(): message = Success
2025.12.30 19:33:24 5: PowerOcean(Ecoflow 0.3.9.0): Ecoflow_Response(): tid =
#10
Solaranlagen / Aw: Modul für Ecoflow-Komponen...
Letzter Beitrag von KölnSolar - 30 Dezember 2025, 19:06:32
Die Meldung kommt ja vom ecoflow-Server.

Ich könnte mir vorstellen, dass das Gerät bei ecoflow nicht Deinem Developer-Account zugeordnet ist, mit dem Du Dir access- und secret-key besorgt hast.

Ansonsten mal ein Log mit verbose 5 hier einstellen, wenn Du "get devices" ausführst.