Zitat von: Guybrush am 22 April 2026, 08:40:00ich hab das Gerät. Einbindung erfolgt so wie du es denkstOkay, danke für die Rückmeldung,defmod EnoceanGateway01 TCM ESP3 <IP>:51000
Die Reichweite ist übrigens exzelent und bei Problemen hilft der Inhaber/Entwickler sogar persönlich![]()
Zitat von: Mafi am 22 April 2026, 09:36:52Guten Morgen!
Ich nutze das ESPLedController Modul in fhem.
Ich hatte am 19.4. ein Update des Controllers aus fhem heraus angestoßen. Das scheint ja dann nicht geklappt zu haben, wenn die Firmware so alt ist. Jetzt habe ich das ganze nochmal per Webinterface gemacht und bin jetzt auf 715 develop. Bin aber gestern Abend nicht mehr dazu gekommen das zu testen. Werde ich heute tun.
Grüße
Markus
Zitat von: Starkstrombastler am 20 April 2026, 21:26:20Hab jetzt die Version 6.05.14 20.04.2026 im Einsatz, mit folgendem Ergebnis:Zitat von: bombardi am 20 April 2026, 10:42:20ich habe ein Problem festgestellt, das bei mir sporadisch auftritt.oh je, da brauchen wir eine gute Glaskugel....Zitat von: bombardi am 20 April 2026, 10:42:20Passiert bei einem shellyplus2pm sogar nur für einen Kanal, der andere funktioniert weiter ohne ProblemeDas passiert dann aber bei einer anderen Abfrage als /rpc/Shelly.GetStatus ?
Wenn es sich tatsächlich um ein Auth-Thema handelt, sollte es verschwinden, wenn du testweise die Authentifizierung vorübergehend herausnimmst.
Mit dem nächsten Update wird das Polling auch nach einem Auth-Error fortgesetzt (das war bisher nur bei Netzwerk-Problemen so gelöst). Damit läuft zumindest dein System weiter.
2026.04.21 15:18:17 2: (Shelly_HttpResponse:err) steinru Error: 'http://admin:xxx@192.168.0.32/rpc/Shelly.GetStatus: wrong authentication :: /rpc/Shelly.GetStatus', state is set to 'Error: something wrong'
2026.04.21 21:15:49 2: (Shelly_HttpResponse:err) steinr Error: 'http://admin:xxx@192.168.0.35/rpc/Shelly.GetStatus: wrong authentication :: /rpc/Shelly.GetStatus', state is set to 'Error: something wrong'steinru ist diesmal der andere Kanal von meinem Shelly Plus 2PM[
{
"id": "sf_logic_prep",
"type": "function",
"z": "fhem_subflow_id",
"name": "URL bauen",
"func": "const baseUrl = env.get(\"FHEM_URL\");\nconst device = env.get(\"FHEM_DEVICE\");\n\nmsg.url = ${baseUrl}/fhem?cmd=jsonList%20${device}&XHR=1;\nreturn msg;",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 210,
"y": 80,
"wires": [
[
"sf_logic_http"
]
]
},
{
"id": "sf_logic_http",
"type": "http request",
"z": "fhem_subflow_id",
"name": "",
"method": "GET",
"ret": "obj",
"paytoqs": "ignore",
"url": "",
"tls": "",
"persist": false,
"proxy": "",
"authType": "",
"senderr": false,
"headers": [],
"x": 370,
"y": 80,
"wires": [
[
"sf_logic_extract"
]
]
},
{
"id": "sf_logic_extract",
"type": "function",
"z": "fhem_subflow_id",
"name": "Wert wandeln",
"func": "const readingName = env.get(\"FHEM_READING\");\nconst targetType = env.get(\"RET_TYPE\");\n\ntry {\n let rawValue = msg.payload.Results[0].Readings[readingName].Value;\n \n if (targetType === \"Zahl\") {\n msg.payload = parseFloat(rawValue.replace(',', '.'));\n } else if (targetType === \"Boolean\") {\n let low = rawValue.toLowerCase();\n msg.payload = (low === \"true\" || low === \"on\" || low === \"1\" || low === \"yes\");\n } else {\n msg.payload = String(rawValue);\n }\n \n return msg;\n} catch (e) {\n node.error(\"Reading '\" + readingName + \"' nicht gefunden!\");\n return null;\n}",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 540,
"y": 80,
"wires": [
[]
]
},
{
"id": "sf_set_logic_prep",
"type": "function",
"z": "fhem_set_subflow_id",
"name": "URL bauen",
"func": "const baseUrl = env.get(\"FHEM_URL\");\nconst device = env.get(\"FHEM_DEVICE\");\nconst reading = env.get(\"FHEM_READING\");\nconst val = msg.payload;\n\n// Wert sicherheitshalber URL-kodieren (falls Leerzeichen o.ä. enthalten sind)\nconst encodedVal = encodeURIComponent(val);\n\nmsg.url = ${baseUrl}/fhem?cmd=setreading%20${device}%20${reading}%20${encodedVal}&XHR=1;\nreturn msg;",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 220,
"y": 80,
"wires": [
[
"sf_set_logic_http"
]
]
},
{
"id": "sf_set_logic_http",
"type": "http request",
"z": "fhem_set_subflow_id",
"name": "",
"method": "GET",
"ret": "txt",
"paytoqs": "ignore",
"url": "",
"tls": "",
"persist": false,
"proxy": "",
"authType": "",
"senderr": false,
"headers": [],
"x": 410,
"y": 80,
"wires": [
[]
]
},
{
"id": "sf_cmd_logic_prep",
"type": "function",
"z": "fhem_cmd_subflow_id",
"name": "Befehl bauen",
"func": "const baseUrl = env.get(\"FHEM_URL\");\nconst device = env.get(\"FHEM_DEVICE\");\nconst command = env.get(\"FHEM_COMMAND\");\nconst val = msg.payload;\n\n// Basis-URL mit set Befehl\nlet fhemCmd = set%20${device}%20${command};\n\n// Wenn ein Wert in msg.payload mitgeliefert wird, hänge ihn an\nif (val !== undefined && val !== null && val !== \"\") {\n fhemCmd += %20${encodeURIComponent(val)};\n}\n\nmsg.url = ${baseUrl}/fhem?cmd=${fhemCmd}&XHR=1;\nreturn msg;",
"outputs": 1,
"noerr": 0,
"initialize": "",
"finalize": "",
"libs": [],
"x": 220,
"y": 80,
"wires": [
[
"sf_cmd_logic_http"
]
]
},
{
"id": "sf_cmd_logic_http",
"type": "http request",
"z": "fhem_cmd_subflow_id",
"name": "",
"method": "GET",
"ret": "txt",
"paytoqs": "ignore",
"url": "",
"tls": "",
"persist": false,
"proxy": "",
"authType": "",
"senderr": false,
"headers": [],
"x": 410,
"y": 80,
"wires": [
[]
]
}
]Zitat von: DS_Starter am 21 April 2026, 22:45:27Welche Strategie hast du eingestellt?
lowSoc=1 upSoC=50 maxSoC=95 loadStrategy=loadReleaselowSoc=10 upSoC=50 maxSoC=95 loadStrategy=loadRelease
Zitat von: romakrau am 16 April 2026, 09:00:01Ich habe folgende Änderung am Soure-Code vorgenommen (War bei mir notwendig):Wozu war diese Änderung nötig?
Die Anpassung von .pio\libdeps\esp32dev\SimpleFTPServer\FtpServerKey.h sollte vor dem Kompilieren erfolgen.