OK, tut alles fast wie gewünscht.
Woran ich noch knobele:
- Manche RegExps scheinen für den Parser bei readingList etwas zu kompliziert zu sein
- Das jsonMap Attribut ist viel zu umständlich. Hier müsste es die Möglichkeit geben, per Wildcard einfach eine ganze Gruppe von Readings auszuschließen.
- Mir fehlt noch eine Möglichkeit, bei "set <Device> CarpetBoost true" den Parameter true in das generierte JSON mit aufzunehmen. Zwar soll laut CommandRef die Verwendung von Perl-Ausdrücken in der setList möglich sein. Das ist aber nicht gut dokumentiert und funktioniert auch nicht einfach so. Abgesehen vom zu setzenden Parameterwert (true in diesem Fall) sollte auch statt der nackten "1" bei der Timestamp die richtige Zeit verwendet werden, dafür brauche ich aber einen Perl-Aufruf im Innern des JSON-Ausdrucks. Es gibt natürlich auch den umgekehrten Weg, das ganze JSON aus Perl heraus zu generieren. Mal sehen, heute nicht mehr.
Also, hier zum Ausprobieren die nackten Konfigurationsdaten für einen MQTT2_CLIENT und ein MQTT2_DEVICE
define RoombaFegerClient MQTT2_CLIENT 192.168.x.yy:8883
attr RoombaFegerClient SSL 1
attr RoombaFegerClient autocreate simple
attr RoombaFegerClient clientId 3.................80
attr RoombaFegerClient mqttVersion 3.1.1
attr RoombaFegerClient sslargs SSL_version:SSLv23
attr RoombaFegerClient username 3.................80
attr RoombaFegerClient verbose 1
define RoombaFeger MQTT2_DEVICE 3................80
attr RoombaFeger IODev RoombaFegerClient
attr RoombaFeger jsonMap state_reported_pose_point_x:position_x\
state_reported_pose_point_y:position_y\
state_reported_pose_theta:position_theta\
state_reported_lastCommand_initiator:lastCommandInitiator\
state_reported_lastCommand_command:lastCommand\
state_reported_lastCommand_time:0\
state_reported_localtimeoffset:0\
state_reported_mac:0\
state_reported_netinfo_addr:0\
state_reported_netinfo_bssid:\
state_reported_netinfo_dhcp:0\
state_reported_netinfo_dns1:0\
state_reported_netinfo_dns2:0\
state_reported_netinfo_gw:0\
state_reported_netinfo_mask:0\
state_reported_netinfo_sec:0\
state_reported_signal_rssi:signalRSSI\
state_reported_signal_snr:signalSNR\
state_reported_utctime:0\
state_reported_wifistat_cloud:0\
state_reported_wifistat_uap:0\
state_reported_wifistat_wifi:0\
state_reported_wlcfg_sec:0\
state_reported_wlcfg_ssid:0\
state_reported_cleanMissionStatus_cycle:cmCycle\
state_reported_cleanMissionStatus_error:cmError\
state_reported_cleanMissionStatus_expireM:cmExpireM\
state_reported_cleanMissionStatus_initiator:cmInitiator\
state_reported_cleanMissionStatus_mssnM:cmMMission\
state_reported_cleanMissionStatus_nMssn:cmNMission\
state_reported_cleanMissionStatus_notReady:cmNotReady\
state_reported_cleanMissionStatus_phase:cmPhase\
state_reported_cleanMissionStatus_rechrgM:cmRechargeM\
state_reported_cleanMissionStatus_sqft:cmSqft\
state_reported_binPause:sBinPause\
state_reported_carpetBoost:sCarpetBoost\
state_reported_openOnly:sOpenOnly\
state_reported_schedHold:sSchedHold\
state_reported_twoPass:sTwoPass\
state_reported_vacHigh:sVacHigh\
attr RoombaFeger readingList 3.......................80:wifistat:.* { json2nameValue($EVENT,'',$JSONMAP) }\
3..................80:.*aws/things/3...........................80/shadow/update.*Command.* { json2nameValue($EVENT,'',$JSONMAP) }
attr RoombaFeger room Unsorted
attr RoombaFeger setList start:noArg cmd {"command": "start", "time": 1, "initiator": "localApp"}\
stop:noArg cmd {"command": "stop", "time": 1, "initiator": "localApp"}\
dock:noArg cmd {"command": "dock", "time": 1, "initiator": "localApp"}\
resume:noArg cmd {"command": "resume", "time": 1, "initiator": "localApp"}\
pause:noArg cmd {"command": "pause", "time": 1, "initiator": "localApp"}\
CarpetBoostOn:noArg delta {"state": {"carpetBoost": true}}\
TwoPassOn:noArg delta {"state": {"twoPass": true}}\
VacHighOn:noArg delta {"state": {"vacHigh": true}}\
CarpetBoostOff:noArg delta {"state": {"carpetBoost": false}}\
TwoPassOff:noArg delta {"state": {"twoPass": false}}\
VacHighOff:noArg delta {"state": {"vacHigh": false}}
LG
pah