Ist es ein Fehler nur bei mir oder kennt ihr dies?
Bei mir wird immer mal wieder einer meiner MQTT-Devices als offline angezeigt obwohl er ganz normal funktioniert.
Heute habe ich einmal ein list eines Rolladen gemacht, der seit 3Uhr nachts offline sein soll, aber um 8Uhr ganz normal gefahren ist.
Internals:
CID shellyswitch25_688739
DEF shellyswitch25_688739
DEVICETOPIC Sh_W_Eb
FUUID 5fe20624-f33f-b6b9-7cdd-fbd0cf5e4e12686d
IODev MQTT2_FHEM_Server
LASTInputDev MQTT2_FHEM_Server
MQTT2_FHEM_Server_MSGCNT 87780
MQTT2_FHEM_Server_TIME 2021-11-24 12:00:18
MSGCNT 87780
NAME Sh_W_Eb
NR 52
STATE <a href="http://172.16.5.31" target="_blank">
false/false
</a>
100/stop
TYPE MQTT2_DEVICE
OLDREADINGS:
READINGS:
2020-12-22 17:15:00 ASC_Enable on
2021-11-24 12:00:23 ASC_ShadingMessage INFO: current shading status is 'out' - next check in 5m
2021-11-24 08:08:14 ASC_ShuttersLastDrive maximum brightness threshold exceeded
2021-11-24 08:30:01 ASC_Time_DriveDown 24.11.2021 - 23:00
2021-11-24 08:30:01 ASC_Time_DriveUp 25.11.2021 - 08:30
2021-11-18 14:05:40 IODev MQTT2_FHEM_Server
2021-11-24 08:09:14 My_energy_total_kWh 1.4555
2021-11-24 12:00:23 My_rmstatus none
2021-11-24 12:00:23 My_sensortemperatur 4.8
2021-11-24 12:00:23 My_status 100
2021-11-24 12:00:23 My_tageszeit 1
2021-11-18 14:05:42 associatedWith Rolladen
2021-11-24 12:00:18 current stop
2021-11-18 14:05:43 fw_ver 20211109-125214/v1.11.7-g682a0db
2021-11-18 14:05:43 id shellyswitch25-688739
2021-11-18 14:05:43 ip 172.16.5.31
2021-11-18 14:05:43 mac 2CF432688739
2021-11-18 14:05:43 mode roller
2021-11-18 14:05:43 model SHSW-25
2021-11-18 14:05:43 new_fw false
2021-11-24 03:37:37 online false
2021-11-24 12:00:18 pct 100
2021-11-24 12:00:18 roller_0_energy 4431
2021-11-24 12:00:18 roller_0_power 0.00
2021-11-24 12:00:18 state 100
2021-11-24 12:00:18 temperature 31.44
2021-11-10 16:28:24 x_update set
Attributes:
ASC 2
ASC_BrightnessSensor FW1:My_Light 340:360
ASC_Down brightness
ASC_Mode_Down always
ASC_Mode_Up always
ASC_Pos_Reading pct
ASC_Shading_InOutAzimuth 190:300
ASC_Shading_MinMax_Elevation 15:100
ASC_Shading_Min_OutsideTemperature 24.0
ASC_Shading_Mode always
ASC_Shading_Pos { (ReadingsVal('Wetter_Proplanta','fc0_tempMax',0) >= 29 ? 5 : 20) }
ASC_Shading_StateChange_SunnyCloudy 880:870
ASC_Shading_WaitingPeriod 600
ASC_TempSensor OWX_28_AAFF4D501401:My_Temp
ASC_Time_Down_Early {ASCSunset('REAL','-1800')}
ASC_Time_Down_Late 23:00
ASC_Time_Up_Early 06:59
ASC_Time_Up_Late 08:30
ASC_Up brightness
IODev MQTT2_FHEM_Server
alias Rollo Einliegerbad
autocreate 0
cmdIcon open:fts_shutter_up close:fts_shutter_down stop:fts_shutter_manual half:fts_shutter_50
comment Shelly 2.5 in Roller-Mode. 100=opened / 0=closed
devStateIcon .*/open:fts_shutter_up@red .*/close:fts_shutter_down@red true/false:10px-kreis-gruen false/.*:10px-kreis-rot true/true:10px-kreis-gelb:x_update 0/stop:fts_shutter_100 100/stop:fts_shutter_10 9\d/stop:fts_shutter_10 8\d/stop:fts_shutter_20 7\d/stop:fts_shutter_30 6\d/stop:fts_shutter_40 5\d/stop:fts_shutter_50 4\d/stop:fts_shutter_60 3\d/stop:fts_shutter_70 2\d/stop:fts_shutter_80 1\d/stop:fts_shutter_90 \d/stop:fts_shutter_100 set_.*:fts_shutter_updown
event-on-change-reading temperature:1,.*
event-on-update-reading ASC_ShuttersLastDrive
icon fts_shutter_automatic
model shelly25_roller_invert_0
readingList shellies/shellyswitch25-688739/roller/0/pos:.* pct
shellies/shellyswitch25-688739/online:.* online
shellies/shellyswitch25-688739/announce:.* { json2nameValue($EVENT) }
shellies/announce:.* { $EVENT =~ m,..id...shellyswitch25-688739...mac.*, ? json2nameValue($EVENT) : return }
shellies/shellyswitch25-688739/roller/0:.* current
shellies/shellyswitch25-688739/roller/0:open {{'state' => 'opening'}}
shellies/shellyswitch25-688739/roller/0:close {{'state' => 'closing'}}
shellies/shellyswitch25-688739/roller/0/pos:.* state
shellies/shellyswitch25-688739/temperature:.* temperature
shellies/shellyswitch25-688739/roller/0/power:.* roller_0_power
shellies/shellyswitch25-688739/roller/0/energy:.* roller_0_energy
room MQTT2_DEVICE,Rolladen,Shelly
setList open:noArg shellies/shellyswitch25-688739/roller/0/command open
close:noArg shellies/shellyswitch25-688739/roller/0/command close
half:noArg shellies/shellyswitch25-688739/roller/0/command/pos 50
stop:noArg shellies/shellyswitch25-688739/roller/0/command stop
pct:slider,0,1,100 shellies/shellyswitch25-688739/roller/0/command/pos $EVTPART1
x_recalibration:noArg shellies/shellyswitch25-688739/roller/0/command rc
x_update:noArg shellies/shellyswitch25-688739/command update_fw
x_mqttcom shellies/shellyswitch25-688739/command $EVTPART1
setStateList open close half stop pct
sortby 060
stateFormat <a href="http://ip" target="_blank">
online/new_fw
</a>
state/current
suppressReading temperature_f
userReadings My_energy_total_kWh:roller_0_energy:.* monotonic {sprintf("%.4f",ReadingsNum("$name","roller_0_energy",0)/60000)},
My_rmstatus {ascAPIget('RoommatesStatus',$name)},
My_sensortemperatur { ascAPIget('OutTemp',$name) },
My_tageszeit {ascAPIget('IsDay',$name)},My_status {if(ReadingsVal("$name","current",0) eq "stop") {ReadingsVal("$name","pct",0)} else {ReadingsVal("$name","current",0)}}
userattr ASC_Adv:on,off ASC_Antifreeze:off,soft,hard,am,pm ASC_Antifreeze_Pos:5,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85,90,95,100 ASC_AutoAstroModeEvening:REAL,CIVIL,NAUTIC,ASTRONOMIC,HORIZON ASC_AutoAstroModeEveningHorizon:-9,-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,8,9 ASC_AutoAstroModeMorning:REAL,CIVIL,NAUTIC,ASTRONOMIC,HORIZON ASC_AutoAstroModeMorningHorizon:-9,-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,8,9 ASC_BlockingTime_afterManual ASC_BlockingTime_beforeDayOpen ASC_BlockingTime_beforeNightClose ASC_BrightnessSensor ASC_Closed_Pos:0,10,20,30,40,50,60,70,80,90,100 ASC_ComfortOpen_Pos:0,10,20,30,40,50,60,70,80,90,100 ASC_CommandTemplate ASC_Down:time,astro,brightness,roommate ASC_DriveUpMaxDuration ASC_Drive_Delay ASC_Drive_DelayStart ASC_ExternalTrigger ASC_GuestRoom:on,off ASC_LockOut:soft,hard,off ASC_LockOut_Cmd:inhibit,blocked,protection ASC_Mode_Down:absent,always,off,home ASC_Mode_Up:absent,always,off,home ASC_Open_Pos:0,10,20,30,40,50,60,70,80,90,100 ASC_Partymode:on,off ASC_Pos_Reading ASC_PrivacyDownValue_beforeNightClose ASC_PrivacyDown_Pos ASC_PrivacyUpValue_beforeDayOpen ASC_PrivacyUp_Pos ASC_RainProtection:on,off ASC_Roommate_Device ASC_Roommate_Reading ASC_Self_Defense_AbsentDelay ASC_Self_Defense_Mode:absent,gone,off ASC_Shading_BetweenTheTime ASC_Shading_InOutAzimuth ASC_Shading_MinMax_Elevation ASC_Shading_Min_OutsideTemperature ASC_Shading_Mode:absent,always,off,home ASC_Shading_Pos:10,20,30,40,50,60,70,80,90,100 ASC_Shading_StateChange_SunnyCloudy ASC_Shading_WaitingPeriod ASC_Shutter_IdleDetection ASC_ShuttersPlace:window,terrace,awning,EG_window ASC_SlatPosCmd_SlatDevice ASC_Sleep_Pos:0,10,20,30,40,50,60,70,80,90,100 ASC_TempSensor ASC_Time_Down_Early ASC_Time_Down_Late ASC_Time_Up_Early ASC_Time_Up_Late ASC_Time_Up_WE_Holiday ASC_Up:time,astro,brightness,roommate ASC_Ventilate_Pos:10,20,30,40,50,60,70,80,90,100 ASC_Ventilate_Window_Open:on,off ASC_WiggleValue ASC_WindParameters ASC_WindProtection:on,off ASC_WindowRec ASC_WindowRec_PosAfterDayClosed:open,lastManual ASC_WindowRec_subType:twostate,threestate
webCmd :open:close:half:stop:pct
widgetOverride devStateIcon:textFieldNL-long ASC_Time_Down_Early:textFieldNL-long
Dieses "offline" kommt daher, dass der Shelly - warum auch immer - nicht innerhalb der angekündigten Zeit unter dem "LWT"-Topic (../online) gesendet hat. Über die Gründe mag ich grade nicht spekulieren...
Ich kenne mich mit MQTT nicht sehr gut aus, aber bisher habe ich bei den Shellies das LWT-Topic nur nach einen Neustart gesehen.
Vielleicht kann man es mit dem announce-command triggern.
In der Regel braucht man das nicht, es wird einfach ein "bin da"-Signal gesendet und dann startet der "offline" (LWT-) Timer im Server neu. Offenkundig kommt das "bin da"-Signal eben nicht an.
Vermutlich ist einfach die WLAN-Verbindung (einmal mehr) "nicht optimal"...
Danke, dann wird es wohl daran liegen.
Übrigens hat ein set announce das Device wieder online gebracht.
setList ergänzt: announce:noArg shellies/shellyswitch25-688739/command announce
ZitatDieses "offline" kommt daher, dass der Shelly - warum auch immer - nicht innerhalb der angekündigten Zeit unter dem "LWT"-Topic (../online) gesendet hat.
Um das etwas zu praezisieren:
- das LWT (aka Last Will and Testament, beinhaltet Topic+Message) wird vom Server gepublisht, wenn die Verbindung zum Client abbricht. Das kann auch der Server durchfuehren, wenn die zugesagten keepalive Pakete nicht rechtzeitig ankommen.
- das Protokoll spezifiziert nicht, dass der Client unter dem LWT-Topic online oder was Vergleichbares senden muss/soll, geschweige denn gibt es hierfuer ein Timeout.
Unter dem Strich bleibt es aber dabei, dass der Shelly nach dem MQTT-Connect freiwillig kein online:true gesendet hat.