The key is in the form Cmnd<msgtype>DpId<ID>DpType<DpIdType> with a
value that is the hex encoding of the DpIdData. This allows Rules to be
written that target status updates from a specific DpId and of a specific
message type. For example, an Anko HEGSM40 fan reports the speed the fan
is operating at via STAT message on DpId 4 of type Enum. To publish the
speed to MQTT as it's reported from the MCU, I can use the following rule:
on TuyaReceived#Cmnd7DpId3DpType4 do Publish stat/%topic%/SPEED %value% endon
This appears "on the wire" as:
stat/tasmota/SPEED 01
If you read enough issues you can finally find a vague reference to "Enable ALL protocols" and tasmota-ir but not in the same issue. Wasted a day on this. Looks like many others have too.
1) Reduce the roam threshold to 5dBm to fix issues where a device might connect at -80dBM which is marginal operation, but would not roam to a -72dBm AP
2) Reduce the scan rate from 44 minutes to 5 minutes to accelerate network harmony
3) Arduino SDK was allowed to control re-connections which resulted in a de-authentication attack on teh WiFi AP. Explicitly disable with WiFi.setAutoReconnect(false);
4) Reduce WIFI_CHECK_SEC to 5, and Wifi.retry_init times to accommodate Tasmota dealing with retransmissions.
5) WifiBeginAfterScan: Save the last BSSID a connection attempt was made on. Should that error, pick the next strongest AP for the next attempt. Addresses situations where an AP has a high RSSI, but poor channel health due to it being overloaded.
6) WifiCheckIPAddrStatus: Error cases did not properly alternate between AP's, with some error cases geeting hug up where they did not initiate a reconnection so the device became non-responsive. Device now starts at Wifi.retry_init, tries to connect, does again at Wifi.retry_init/2, and then does a WifiConfig. Should no IP address be received, restart DHCP each second during this time.
Test Environment:
27 Tasmota devices
3 SonicWALL corporate AP's
Highly interfered 801.11n network