MQTT-Device falsch als 'offline' gekennzeichnet

Begonnen von wk, 24 November 2021, 12:11:36

Vorheriges Thema - Nächstes Thema

wk

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

Beta-User

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...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

wk

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.

Beta-User

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"...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

wk

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

rudolfkoenig

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.