userReadings löst nicht aus

Begonnen von TomLee, 25 September 2021, 12:52:38

Vorheriges Thema - Nächstes Thema

TomLee

Kann mir wer sagen warum das brightness-userReading nicht getriggert wird ?
Im Log steht auch mit erhöhtem verbose-Level nix.
Die trigger-Angabe mMn. richtig.


defmod MQTT2_v1_eg MQTT2_DEVICE rockrobo
attr MQTT2_v1_eg devicetopic valetudo/rockrobo
attr MQTT2_v1_eg event-on-change-reading .*
attr MQTT2_v1_eg event-on-update-reading brightness
attr MQTT2_v1_eg genericDeviceType light
attr MQTT2_v1_eg icon vacuum_top
attr MQTT2_v1_eg model roborockRE
attr MQTT2_v1_eg readingList homeassistant/vacuum/valetudo_rockrobo/config:.* {}\
$DEVICETOPIC/state:.* { json2nameValue($EVENT) }\
$DEVICETOPIC/attributes:.* { json2nameValue($EVENT) }\
$DEVICETOPIC/map_data:.* {}\
$DEVICETOPIC/command_status:.* { json2nameValue($EVENT) }\
$DEVICETOPIC/destinations:.* { valetudoREdest($EVENT) }
attr MQTT2_v1_eg room EG,MQTT2_DEVICE
attr MQTT2_v1_eg setList charge:noArg $DEVICETOPIC/command return_to_base\
fan_power:whisper,min,medium,high,max,mop $DEVICETOPIC/set_fan_speed $EVTPART1\
locate:noArg $DEVICETOPIC/command locate\
pause:noArg $DEVICETOPIC/command pause\
spot:noArg $DEVICETOPIC/command clean_spot\
start:noArg $DEVICETOPIC/command start\
stop:noArg $DEVICETOPIC/command stop\
get_dest:noArg { $DEVICETOPIC.valetudoRE($EVENT) }\
goto:textField { $DEVICETOPIC.valetudoRE($EVENT) }\
map:textField { $DEVICETOPIC.valetudoRE($EVENT) }\
reset_consumable:main,side,filter,sensor { $DEVICETOPIC.valetudoRE($EVENT) }\
zone:textField { $DEVICETOPIC.valetudoRE($EVENT) }\
x_raw_payload:textField { $DEVICETOPIC.valetudoRE($EVENT)}\
brightness:slider,0,1,10,1 undef $EVENT
attr MQTT2_v1_eg setStateList charge fan_power get_dest goto locate map pause reset_consumable spot start stop zone x_raw_payload
attr MQTT2_v1_eg timestamp-on-change-reading .*
attr MQTT2_v1_eg userReadings autoReturn:valetudo_state_name:.Idle {fhem("sleep $name:bin_in_time:.0 waitbin;;set $name charge");;return 'return'},\
brightness:brightness:.set.* {\
my $v = (split q{ }, ReadingsVal($name,'brightness','set 5')[1];;\
my $c = 'zone';;\
my %pct2cmnd = (\
'1' => "San Fernando",\
'2' => "Kueche",\
'3' => "Flur",\
'4' => "Hinten",\
'5' => "Alles");;\
my $command = $pct2cmnd{$v};; \
return if !$command;;\
return fhem("set $name $c $command");;return $v;;}
attr MQTT2_v1_eg verbose 4

setstate MQTT2_v1_eg idle
setstate MQTT2_v1_eg 2021-09-25 12:40:39 IODev MQTT2_Server
setstate MQTT2_v1_eg 2021-09-19 18:30:55 attrTemplateVersion 20210510
setstate MQTT2_v1_eg 2021-09-23 18:02:18 autoReturn return
setstate MQTT2_v1_eg 2021-09-25 11:33:37 battery_level 95
setstate MQTT2_v1_eg 2021-09-25 11:23:25 bin_in_time 6813
setstate MQTT2_v1_eg 2021-09-25 12:46:36 brightness set 3
setstate MQTT2_v1_eg 2021-09-25 11:33:37 cleanArea 6159.0
setstate MQTT2_v1_eg 2021-09-25 11:33:37 cleanCount 240
setstate MQTT2_v1_eg 2021-09-24 16:49:26 cleanTime 111.8
setstate MQTT2_v1_eg 2021-09-25 11:23:19 command update_map_data_topic
setstate MQTT2_v1_eg 2021-09-25 11:23:25 currentCleanArea 4.8
setstate MQTT2_v1_eg 2021-09-25 11:33:37 currentCleanTime 2.9
setstate MQTT2_v1_eg 2021-09-24 13:58:17 error mqtt updateMapDataTopic timed out
setstate MQTT2_v1_eg 2021-09-24 13:38:38 errorCode 3
setstate MQTT2_v1_eg 2021-09-19 19:15:48 fan_speed high
setstate MQTT2_v1_eg 2021-09-24 20:36:58 filter 38.1
setstate MQTT2_v1_eg 2021-09-19 19:15:42 last_bin_full -1
setstate MQTT2_v1_eg 2021-09-24 12:21:30 last_bin_out 1632478890089
setstate MQTT2_v1_eg 2021-09-20 10:16:17 last_loaded_map_date 1632125717574
setstate MQTT2_v1_eg 2021-09-20 10:16:17 last_loaded_map_name 1stMap
setstate MQTT2_v1_eg 2021-09-25 11:33:37 last_run_stats_area 4.8
setstate MQTT2_v1_eg 2021-09-25 11:33:37 last_run_stats_duration 172
setstate MQTT2_v1_eg 2021-09-25 11:33:37 last_run_stats_endTime 1632562394000
setstate MQTT2_v1_eg 2021-09-19 19:19:38 last_run_stats_errorCode 0
setstate MQTT2_v1_eg 2021-09-19 19:19:38 last_run_stats_errorDescription No error
setstate MQTT2_v1_eg 2021-09-24 16:52:23 last_run_stats_finishedFlag false
setstate MQTT2_v1_eg 2021-09-25 11:33:37 last_run_stats_startTime 1632561468000
setstate MQTT2_v1_eg 2021-09-24 20:36:58 mainBrush 188.1
setstate MQTT2_v1_eg 2021-09-19 21:25:19 message ok
setstate MQTT2_v1_eg 2021-09-24 15:36:02 message_1 ok
setstate MQTT2_v1_eg 2021-09-24 16:49:26 sensor 29.1
setstate MQTT2_v1_eg 2021-09-24 20:36:58 sideBrush 88.1
setstate MQTT2_v1_eg 2021-09-25 11:34:42 state idle
setstate MQTT2_v1_eg 2021-09-25 11:23:19 updated 1632561800483
setstate MQTT2_v1_eg 2021-09-25 11:44:31 valetudo_state_id 2
setstate MQTT2_v1_eg 2021-09-25 11:44:31 valetudo_state_name Charger disconnected


edit:

Darf der Perl-Code evtl. nicht mehrzeilig sein, probier ich jetzt aus.

Beta-User

Auf sich selbst triggern geht in userReadings (und auch sonst) nicht.
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

TomLee

#2
Ob das am Ende eine saubere Lösung ist oder nicht, ich würde gerne testen, mit allen Mitteln  8), ob das so klappt ( und davon gehe ich aus ) wie ich mir das vorstelle und in Alexa ( über den Umweg gDT light oder blind oder wie auch immer) einen slider bekomme, mit dem ich die Zonen auswählen kann und das alles in einem Device.

In Alexa bekomme ich mit dem kleinen brightness-setter und Reading eh keinen slider, wenn ich mir von den zigbee2mqtt_light_*-Templates das homebridgeMapping anschaue, verstehe ich es so das der setter und Reading groß geschrieben werden müssen.
Zum testen hab ich jetzt vor den setter klein zu lassen (meinetwegen steht da immer im Reading set . drin) und das userReadings groß.
Das der setter von Alexa erkannt wird setz ich halt ein homebridgemapping  ;), so stell ich mir bis jetzt vor sollte doch der slider angezeigt werden.

Oben in dem split fehlte noch eine Klammer, das hab ich jetzt korrigiert, trotzdem soll es noch eine fehlende rechte Klammer geben, sehe sie aber nicht, vorallem weil das hier:

{my $v = (split q{ }, ReadingsVal('MQTT2_v1_eg','brightness','set 5'))[1];;my $c = 'zone';;my %pct2cmnd = ('1' => "San Fernando",'2' => "Kueche",'3' => "Flur",'4' => "Hinten",'5' => "Alles");;my $command = $pct2cmnd{$v};;return if !$command;;return fhem("set MQTT2_v1_eg $c $command");;return $v;;}

aus der Kommandozeile klappt.

Und im Device nicht:

defmod MQTT2_v1_eg MQTT2_DEVICE rockrobo
attr MQTT2_v1_eg alexaName fernando
attr MQTT2_v1_eg devicetopic valetudo/rockrobo
attr MQTT2_v1_eg event-on-change-reading .*
attr MQTT2_v1_eg event-on-update-reading brightness
attr MQTT2_v1_eg genericDeviceType light
attr MQTT2_v1_eg icon vacuum_top
attr MQTT2_v1_eg model roborockRE
attr MQTT2_v1_eg readingList homeassistant/vacuum/valetudo_rockrobo/config:.* {}\
$DEVICETOPIC/state:.* { json2nameValue($EVENT) }\
$DEVICETOPIC/attributes:.* { json2nameValue($EVENT) }\
$DEVICETOPIC/map_data:.* {}\
$DEVICETOPIC/command_status:.* { json2nameValue($EVENT) }\
$DEVICETOPIC/destinations:.* { valetudoREdest($EVENT) }
attr MQTT2_v1_eg room EG,MQTT2_DEVICE
attr MQTT2_v1_eg setList on:noArg $DEVICETOPIC/command start\
off:noArg $DEVICETOPIC/command stop\
charge:noArg $DEVICETOPIC/command return_to_base\
fan_power:whisper,min,medium,high,max,mop $DEVICETOPIC/set_fan_speed $EVTPART1\
locate:noArg $DEVICETOPIC/command locate\
pause:noArg $DEVICETOPIC/command pause\
spot:noArg $DEVICETOPIC/command clean_spot\
start:noArg $DEVICETOPIC/command start\
stop:noArg $DEVICETOPIC/command stop\
get_dest:noArg { $DEVICETOPIC.valetudoRE($EVENT) }\
goto:textField { $DEVICETOPIC.valetudoRE($EVENT) }\
map:textField { $DEVICETOPIC.valetudoRE($EVENT) }\
reset_consumable:main,side,filter,sensor { $DEVICETOPIC.valetudoRE($EVENT) }\
zone:textField { $DEVICETOPIC.valetudoRE($EVENT) }\
x_raw_payload:textField { $DEVICETOPIC.valetudoRE($EVENT)}\
brightness:slider,0,1,10,1 undef $EVENT
attr MQTT2_v1_eg setStateList charge fan_power get_dest goto locate map pause reset_consumable spot start stop zone x_raw_payload
attr MQTT2_v1_eg timestamp-on-change-reading .*
attr MQTT2_v1_eg userReadings Brightness:brightness:.set.* {my $v = (split q{ }, ReadingsVal($name,'brightness','set 5'))[1];;my $c = 'zone';;my %pct2cmnd = ('1' => "San Fernando",'2' => "Kueche",'3' => "Flur",'4' => "Hinten",'5' => "Alles");;my $command = $pct2cmnd{$v};;return if !$command;;return fhem("set $name $c $command");;return $v;;}
attr MQTT2_v1_eg verbose 4

setstate MQTT2_v1_eg docked
setstate MQTT2_v1_eg 2021-09-25 14:52:42 Brightness Error evaluating MQTT2_v1_eg userReading Brightness: syntax error at (eval 907796) line 1, at EOF\
Missing right curly or square bracket at (eval 907796) line 1, at end of line\

setstate MQTT2_v1_eg 2021-09-25 12:40:39 IODev MQTT2_Server
setstate MQTT2_v1_eg 2021-09-19 18:30:55 attrTemplateVersion 20210510
setstate MQTT2_v1_eg 2021-09-23 18:02:18 autoReturn return
setstate MQTT2_v1_eg 2021-09-25 15:06:20 battery_level 100
setstate MQTT2_v1_eg 2021-09-25 15:02:55 bin_in_time 6909
setstate MQTT2_v1_eg 2021-09-25 14:52:42 brightness set 3
setstate MQTT2_v1_eg 2021-09-25 15:04:00 cleanArea 6161.0
setstate MQTT2_v1_eg 2021-09-25 15:04:00 cleanCount 242
setstate MQTT2_v1_eg 2021-09-24 16:49:26 cleanTime 111.8
setstate MQTT2_v1_eg 2021-09-25 14:31:59 command zoned_cleanup
setstate MQTT2_v1_eg 2021-09-25 15:02:55 currentCleanArea 1.4
setstate MQTT2_v1_eg 2021-09-25 15:02:55 currentCleanTime 0.9
setstate MQTT2_v1_eg 2021-09-25 14:37:22 error Cliff sensors alarm, carry the robot to different place
setstate MQTT2_v1_eg 2021-09-24 13:38:38 errorCode 3
setstate MQTT2_v1_eg 2021-09-19 19:15:48 fan_speed high
setstate MQTT2_v1_eg 2021-09-24 20:36:58 filter 38.1
setstate MQTT2_v1_eg 2021-09-19 19:15:42 last_bin_full -1
setstate MQTT2_v1_eg 2021-09-24 12:21:30 last_bin_out 1632478890089
setstate MQTT2_v1_eg 2021-09-25 15:05:49 last_loaded_map_date 1632575089589
setstate MQTT2_v1_eg 2021-09-25 14:30:24 last_loaded_map_name EG
setstate MQTT2_v1_eg 2021-09-25 15:04:00 last_run_stats_area 1.4
setstate MQTT2_v1_eg 2021-09-25 15:04:00 last_run_stats_duration 53
setstate MQTT2_v1_eg 2021-09-25 15:04:00 last_run_stats_endTime 1632575038000
setstate MQTT2_v1_eg 2021-09-19 19:19:38 last_run_stats_errorCode 0
setstate MQTT2_v1_eg 2021-09-19 19:19:38 last_run_stats_errorDescription No error
setstate MQTT2_v1_eg 2021-09-24 16:52:23 last_run_stats_finishedFlag false
setstate MQTT2_v1_eg 2021-09-25 15:04:00 last_run_stats_startTime 1632574907000
setstate MQTT2_v1_eg 2021-09-24 20:36:58 mainBrush 188.1
setstate MQTT2_v1_eg 2021-09-19 21:25:19 message ok
setstate MQTT2_v1_eg 2021-09-24 15:36:02 message_1 ok
setstate MQTT2_v1_eg 2021-09-24 16:49:26 sensor 29.1
setstate MQTT2_v1_eg 2021-09-24 20:36:58 sideBrush 88.1
setstate MQTT2_v1_eg 2021-09-25 15:04:00 state docked
setstate MQTT2_v1_eg 2021-09-25 15:01:47 updated 1632574906603
setstate MQTT2_v1_eg 2021-09-25 15:04:00 valetudo_state_id 8
setstate MQTT2_v1_eg 2021-09-25 15:04:00 valetudo_state_name Charging


Zu dem homebridgeMapping Brightness=brightness::brightness muss ich mich erstmal noch einlesen, welches brightness da für den setter zuständig ist, das erste oder das zweite ?

Beta-User

Nope, wenn das Reading selbst verändert werden soll, wird das nicht ausgeführt, basta (siehe Quellcode in fhem.pl).

Aber warum userReadings, wenn du direkt in der setList Perl verwenden kannst ;) ?
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

TomLee

#4
Zitatwenn das Reading selbst verändert werden soll, wird das nicht ausgeführt, basta

Nix basta, aus einem anderen Device (hier sleep) schon, so wie das Otto in #1 über meinem userReadings auch macht, das weißt du schon, magst es hier aber auslassen.

Ich bin zu pct und blind übergegangen und so klappt auch alles wie ich will, der Status in der Alexa App wär mir egal, das das split nicht geklappt hatte, daran ist Otto Schuld  8) :P ;D, da ich eh gerade zu dem Zeitpunkt als ich es brauchte in der rockroboUtils war hatte ich mir dort das q{} mit aus dem split rauskopiert, welches er dort verwendet, was falsch ist (edit: zumindest hier zur Meldung führt).

Was ich bis jetzt nicht verstanden habe ist das das return 'return' bei ihm ausgeführt wird, nach dem ersten return das "greift", sollte doch Schluß sein, hab ich mich aber bisher nicht im Detail mit beschäftigt.

Bei mir wird das nämlich nicht ausgeführt und so verstehe ich es eigentlich auch, weil der FHEM-Befehl ja ausgeführt wird.

edit:
Deshalb auch kein level-Reading.

defmod MQTT2_v1_eg MQTT2_DEVICE rockrobo
attr MQTT2_v1_eg alexaName fernando
attr MQTT2_v1_eg devicetopic valetudo/rockrobo
attr MQTT2_v1_eg event-on-change-reading .*
attr MQTT2_v1_eg event-on-update-reading pct
attr MQTT2_v1_eg genericDeviceType blind
attr MQTT2_v1_eg icon vacuum_top
attr MQTT2_v1_eg model roborockRE
attr MQTT2_v1_eg readingList homeassistant/vacuum/valetudo_rockrobo/config:.* {}\
$DEVICETOPIC/state:.* { json2nameValue($EVENT) }\
$DEVICETOPIC/attributes:.* { json2nameValue($EVENT) }\
$DEVICETOPIC/map_data:.* {}\
$DEVICETOPIC/command_status:.* { json2nameValue($EVENT) }\
$DEVICETOPIC/destinations:.* { valetudoREdest($EVENT) }
attr MQTT2_v1_eg room EG,MQTT2_DEVICE
attr MQTT2_v1_eg setList up:noArg $DEVICETOPIC/command return_to_base\
down:noArg $DEVICETOPIC/command pause\
charge:noArg $DEVICETOPIC/command return_to_base\
fan_power:whisper,min,medium,high,max,mop $DEVICETOPIC/set_fan_speed $EVTPART1\
locate:noArg $DEVICETOPIC/command locate\
pause:noArg $DEVICETOPIC/command pause\
spot:noArg $DEVICETOPIC/command clean_spot\
start:noArg $DEVICETOPIC/command start\
stop:noArg $DEVICETOPIC/command stop\
get_dest:noArg { $DEVICETOPIC.valetudoRE($EVENT) }\
goto:textField { $DEVICETOPIC.valetudoRE($EVENT) }\
map:textField { $DEVICETOPIC.valetudoRE($EVENT) }\
reset_consumable:main,side,filter,sensor { $DEVICETOPIC.valetudoRE($EVENT) }\
zone:textField { $DEVICETOPIC.valetudoRE($EVENT) }\
x_raw_payload:textField { $DEVICETOPIC.valetudoRE($EVENT)}\
pct:slider,0,1,10,1 undef $EVENT
attr MQTT2_v1_eg setStateList charge fan_power get_dest goto locate map pause reset_consumable spot start stop zone x_raw_payload
attr MQTT2_v1_eg timestamp-on-change-reading .*
attr MQTT2_v1_eg userReadings level:pct:.set.* {my $v = (split q( ), ReadingsVal($name,'pct','set 5'))[1];;\
my $c = 'zone';;\
my %pct2cmnd = (\
'1' => "San Fernando",\
'2' => "Kueche",\
'3' => "Flur",\
'4' => "Hinten",\
'5' => "Alles");;\
my $command = $pct2cmnd{$v};;\
return if !$command;;\
return fhem("sleep 1;;set $name $c $command");; $v;;}

setstate MQTT2_v1_eg docked
setstate MQTT2_v1_eg 2021-09-25 19:45:12 battery_level 100
setstate MQTT2_v1_eg 2021-09-25 19:48:11 bin_in_time 52
setstate MQTT2_v1_eg 2021-09-25 19:45:12 cleanArea 6171.8
setstate MQTT2_v1_eg 2021-09-25 19:48:55 cleanCount 251
setstate MQTT2_v1_eg 2021-09-25 19:45:17 cleanTime 112.1
setstate MQTT2_v1_eg 2021-09-25 19:48:20 command return_to_base
setstate MQTT2_v1_eg 2021-09-25 19:45:12 currentCleanArea 0.0
setstate MQTT2_v1_eg 2021-09-25 19:48:55 currentCleanTime 0.2
setstate MQTT2_v1_eg 2021-09-25 19:45:12 fan_speed high
setstate MQTT2_v1_eg 2021-09-25 19:45:12 filter 37.9
setstate MQTT2_v1_eg 2021-09-25 19:45:12 last_bin_full -1
setstate MQTT2_v1_eg 2021-09-25 19:45:12 last_bin_out 1632590175189
setstate MQTT2_v1_eg 2021-09-25 19:45:12 last_loaded_map_date 1632575089589
setstate MQTT2_v1_eg 2021-09-25 19:45:12 last_loaded_map_name EG
setstate MQTT2_v1_eg 2021-09-25 19:45:12 last_run_stats_area 0.0
setstate MQTT2_v1_eg 2021-09-25 19:48:55 last_run_stats_duration 12
setstate MQTT2_v1_eg 2021-09-25 19:48:55 last_run_stats_endTime 1632592134000
setstate MQTT2_v1_eg 2021-09-25 19:45:12 last_run_stats_errorCode 0
setstate MQTT2_v1_eg 2021-09-25 19:45:12 last_run_stats_errorDescription No error
setstate MQTT2_v1_eg 2021-09-25 19:45:12 last_run_stats_finishedFlag false
setstate MQTT2_v1_eg 2021-09-25 19:48:55 last_run_stats_startTime 1632592048000
setstate MQTT2_v1_eg 2021-09-25 19:45:12 mainBrush 187.9
setstate MQTT2_v1_eg 2021-09-25 19:47:41 message ok
setstate MQTT2_v1_eg 2021-09-25 19:45:10 message_1 ok
setstate MQTT2_v1_eg 2021-09-25 19:47:27 pct set 3
setstate MQTT2_v1_eg 2021-09-25 19:45:12 sensor 28.8
setstate MQTT2_v1_eg 2021-09-25 19:45:12 sideBrush 87.9
setstate MQTT2_v1_eg 2021-09-25 19:48:55 state docked
setstate MQTT2_v1_eg 2021-09-25 19:48:21 updated 1632592090964
setstate MQTT2_v1_eg 2021-09-25 19:48:55 valetudo_state_id 8
setstate MQTT2_v1_eg 2021-09-25 19:48:55 valetudo_state_name Charging

Zitat
Aber warum userReadings, wenn du direkt in der setList Perl verwenden kannst ;) ?

::) Ich schaus mir an.

Otto123

Was soll an q{ } falsch sein? Es liefert ein Leerzeichen zurück. Die Empfehlung an irgendeiner Stelle war, diese Form dem ' ' zu bevorzugen.
Siehe auch https://perldoc.perl.org/perlop

Welche Meldung kommt da bei Dir?
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

TomLee

Und mit einem anschliessenden setreading  8) nach dem set-Kommando ( hab ich natürlich erst wieder nach dem schreiben begriffen) passt das auch mit dem Stautus des slider in der Alexa-App (reading pct).

defmod MQTT2_v1_eg MQTT2_DEVICE rockrobo
attr MQTT2_v1_eg alexaName fernando
attr MQTT2_v1_eg devicetopic valetudo/rockrobo
attr MQTT2_v1_eg event-on-change-reading .*
attr MQTT2_v1_eg event-on-update-reading pct
attr MQTT2_v1_eg genericDeviceType blind
attr MQTT2_v1_eg icon vacuum_top
attr MQTT2_v1_eg model roborockRE
attr MQTT2_v1_eg readingList homeassistant/vacuum/valetudo_rockrobo/config:.* {}\
$DEVICETOPIC/state:.* { json2nameValue($EVENT) }\
$DEVICETOPIC/attributes:.* { json2nameValue($EVENT) }\
$DEVICETOPIC/map_data:.* {}\
$DEVICETOPIC/command_status:.* { json2nameValue($EVENT) }\
$DEVICETOPIC/destinations:.* { valetudoREdest($EVENT) }
attr MQTT2_v1_eg room EG,MQTT2_DEVICE
attr MQTT2_v1_eg setList up:noArg $DEVICETOPIC/command return_to_base\
down:noArg $DEVICETOPIC/command pause\
charge:noArg $DEVICETOPIC/command return_to_base\
fan_power:whisper,min,medium,high,max,mop $DEVICETOPIC/set_fan_speed $EVTPART1\
locate:noArg $DEVICETOPIC/command locate\
pause:noArg $DEVICETOPIC/command pause\
spot:noArg $DEVICETOPIC/command clean_spot\
start:noArg $DEVICETOPIC/command start\
stop:noArg $DEVICETOPIC/command stop\
get_dest:noArg { $DEVICETOPIC.valetudoRE($EVENT) }\
goto:textField { $DEVICETOPIC.valetudoRE($EVENT) }\
map:textField { $DEVICETOPIC.valetudoRE($EVENT) }\
reset_consumable:main,side,filter,sensor { $DEVICETOPIC.valetudoRE($EVENT) }\
zone:textField { $DEVICETOPIC.valetudoRE($EVENT) }\
x_raw_payload:textField { $DEVICETOPIC.valetudoRE($EVENT)}\
pct:slider,0,1,10,1 undef $EVENT
attr MQTT2_v1_eg setStateList charge fan_power get_dest goto locate map pause reset_consumable spot start stop zone x_raw_payload
attr MQTT2_v1_eg timestamp-on-change-reading .*
attr MQTT2_v1_eg userReadings level:pct:.set.* {my $v = (split q( ), ReadingsVal($name,'pct','set 5'))[1];;\
my $c = 'zone';;\
my %pct2cmnd = (\
'1' => "San Fernando",\
'2' => "Kueche",\
'3' => "Flur",\
'4' => "Hinten",\
'5' => "Alles");;\
my $command = $pct2cmnd{$v};;\
return if !$command;;\
return fhem("sleep 1;;set $name $c $command;;setreading $name pct $v");;}

setstate MQTT2_v1_eg paused
setstate MQTT2_v1_eg 2021-09-25 19:45:12 battery_level 100
setstate MQTT2_v1_eg 2021-09-25 21:04:31 bin_in_time 63
setstate MQTT2_v1_eg 2021-09-25 19:45:12 cleanArea 6171.8
setstate MQTT2_v1_eg 2021-09-25 19:48:55 cleanCount 251
setstate MQTT2_v1_eg 2021-09-25 19:45:17 cleanTime 112.1
setstate MQTT2_v1_eg 2021-09-25 21:04:21 command pause
setstate MQTT2_v1_eg 2021-09-25 19:45:12 currentCleanArea 0.0
setstate MQTT2_v1_eg 2021-09-25 19:48:55 currentCleanTime 0.2
setstate MQTT2_v1_eg 2021-09-25 19:45:12 fan_speed high
setstate MQTT2_v1_eg 2021-09-25 19:45:12 filter 37.9
setstate MQTT2_v1_eg 2021-09-25 19:45:12 last_bin_full -1
setstate MQTT2_v1_eg 2021-09-25 19:45:12 last_bin_out 1632590175189
setstate MQTT2_v1_eg 2021-09-25 19:45:12 last_loaded_map_date 1632575089589
setstate MQTT2_v1_eg 2021-09-25 19:45:12 last_loaded_map_name EG
setstate MQTT2_v1_eg 2021-09-25 19:45:12 last_run_stats_area 0.0
setstate MQTT2_v1_eg 2021-09-25 19:48:55 last_run_stats_duration 12
setstate MQTT2_v1_eg 2021-09-25 19:48:55 last_run_stats_endTime 1632592134000
setstate MQTT2_v1_eg 2021-09-25 19:45:12 last_run_stats_errorCode 0
setstate MQTT2_v1_eg 2021-09-25 19:45:12 last_run_stats_errorDescription No error
setstate MQTT2_v1_eg 2021-09-25 19:45:12 last_run_stats_finishedFlag false
setstate MQTT2_v1_eg 2021-09-25 19:48:55 last_run_stats_startTime 1632592048000
setstate MQTT2_v1_eg 2021-09-25 19:45:12 mainBrush 187.9
setstate MQTT2_v1_eg 2021-09-25 19:47:41 message ok
setstate MQTT2_v1_eg 2021-09-25 19:45:10 message_1 ok
setstate MQTT2_v1_eg 2021-09-25 21:04:09 pct 3
setstate MQTT2_v1_eg 2021-09-25 19:45:12 sensor 28.8
setstate MQTT2_v1_eg 2021-09-25 19:45:12 sideBrush 87.9
setstate MQTT2_v1_eg 2021-09-25 21:04:31 state paused
setstate MQTT2_v1_eg 2021-09-25 21:04:21 updated 1632596660983
setstate MQTT2_v1_eg 2021-09-25 21:04:31 valetudo_state_id 10
setstate MQTT2_v1_eg 2021-09-25 21:04:31 valetudo_state_name Paused


ZitatWas soll an q{ } falsch sein? Es liefert ein Leerzeichen zurück.

Die geschweiften Klammern führen bei mir zu der Meldung !

TomLee

Zitat
Die geschweiften Klammern führen bei mir zu der Meldung !

Zum nachvollziehen, müsstest bei dir eigentlich nur
pct:slider,0,1,10,1 undef $EVENT
in der setList ergänzen und natürlich mein userReadings aber mit q{}.

Otto123

ist die Meldung oben nicht alt? 2021-09-25 14:52:42

Aber egal, man kann für {} wohl fast jeden beliebigen delimiter nehmen. Wenns mit () geht ist es doch gut.
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

TomLee

Delimiter, nach dem Wort hab ich eben gesucht, sonst hätt ich schon füher geschrieben, ja, ich hab mich noch etwas weiter mit beschäftigt, es liegt nur daran das in dem userReadings geschweifte als Delimiter verwendet werden, aus der Kommandozeile klappts auch mit geschweiften .

Jetzt beschäftige ich mich damit ob es wie vorgeschlagen auch in setList wie gewünscht umsetzbar ist.

TomLee

#10
Na das war ja einfacher wie gedacht, wen das interessiert, hier meine Umsetzung :

defmod MQTT2_v1_eg MQTT2_DEVICE rockrobo
attr MQTT2_v1_eg alexaName fernando
attr MQTT2_v1_eg devicetopic valetudo/rockrobo
attr MQTT2_v1_eg event-on-change-reading .*
attr MQTT2_v1_eg event-on-update-reading pct
attr MQTT2_v1_eg genericDeviceType blind
attr MQTT2_v1_eg icon vacuum_top
attr MQTT2_v1_eg model roborockRE
attr MQTT2_v1_eg readingList homeassistant/vacuum/valetudo_rockrobo/config:.* {}\
$DEVICETOPIC/state:.* { json2nameValue($EVENT) }\
$DEVICETOPIC/attributes:.* { json2nameValue($EVENT) }\
$DEVICETOPIC/map_data:.* {}\
$DEVICETOPIC/command_status:.* { json2nameValue($EVENT) }\
$DEVICETOPIC/destinations:.* { valetudoREdest($EVENT) }
attr MQTT2_v1_eg room EG,MQTT2_DEVICE
attr MQTT2_v1_eg setList up:noArg $DEVICETOPIC/command return_to_base\
down:noArg $DEVICETOPIC/command pause\
charge:noArg $DEVICETOPIC/command return_to_base\
fan_power:whisper,min,medium,high,max,mop $DEVICETOPIC/set_fan_speed $EVTPART1\
locate:noArg $DEVICETOPIC/command locate\
pause:noArg $DEVICETOPIC/command pause\
spot:noArg $DEVICETOPIC/command clean_spot\
start:noArg $DEVICETOPIC/command start\
stop:noArg $DEVICETOPIC/command stop\
get_dest:noArg { $DEVICETOPIC.valetudoRE($EVENT) }\
goto:textField { $DEVICETOPIC.valetudoRE($EVENT) }\
map:textField { $DEVICETOPIC.valetudoRE($EVENT) }\
reset_consumable:main,side,filter,sensor { $DEVICETOPIC.valetudoRE($EVENT) }\
zone:textField { $DEVICETOPIC.valetudoRE($EVENT) }\
x_raw_payload:textField { $DEVICETOPIC.valetudoRE($EVENT)}\
pct:slider,0,1,10,1 {my $c = 'zone';;my %pct2cmnd = ('0' => "pause",'1' => "$c San Fernando",'2' => "$c Kueche",'3' => "$c Flur",'4' => "$c Hinten",'5' => "$c Alles",'6' => "charge");;my $command = $pct2cmnd{$EVTPART1};;Debug $EVTPART1;;return if !$command;;return fhem("set $NAME $command;;setreading $NAME pct $EVTPART1");;}
attr MQTT2_v1_eg setStateList charge fan_power get_dest goto locate map pause reset_consumable spot start stop zone x_raw_payload
attr MQTT2_v1_eg timestamp-on-change-reading .*

setstate MQTT2_v1_eg docked
setstate MQTT2_v1_eg 2021-09-25 22:37:51 battery_level 97
setstate MQTT2_v1_eg 2021-09-25 22:36:18 bin_in_time 190
setstate MQTT2_v1_eg 2021-09-25 22:32:46 cleanArea 6172.2
setstate MQTT2_v1_eg 2021-09-25 22:36:18 cleanCount 259
setstate MQTT2_v1_eg 2021-09-25 22:23:56 cleanTime 112.1
setstate MQTT2_v1_eg 2021-09-25 22:37:49 command pause
setstate MQTT2_v1_eg 2021-09-25 22:35:45 currentCleanArea 0.0
setstate MQTT2_v1_eg 2021-09-25 22:36:18 currentCleanTime 0.0
setstate MQTT2_v1_eg 2021-09-25 22:37:35 error Invalid zone_ids
setstate MQTT2_v1_eg 2021-09-25 22:23:56 fan_speed high
setstate MQTT2_v1_eg 2021-09-25 22:27:14 filter 37.8
setstate MQTT2_v1_eg 2021-09-25 22:23:56 last_bin_full -1
setstate MQTT2_v1_eg 2021-09-25 22:23:56 last_bin_out 1632590175189
setstate MQTT2_v1_eg 2021-09-25 22:23:56 last_loaded_map_date 1632575089589
setstate MQTT2_v1_eg 2021-09-25 22:23:56 last_loaded_map_name EG
setstate MQTT2_v1_eg 2021-09-25 22:35:45 last_run_stats_area 0.0
setstate MQTT2_v1_eg 2021-09-25 22:36:18 last_run_stats_duration 0
setstate MQTT2_v1_eg 2021-09-25 22:36:18 last_run_stats_endTime 1632602166000
setstate MQTT2_v1_eg 2021-09-25 22:23:56 last_run_stats_errorCode 0
setstate MQTT2_v1_eg 2021-09-25 22:23:56 last_run_stats_errorDescription No error
setstate MQTT2_v1_eg 2021-09-25 22:23:56 last_run_stats_finishedFlag false
setstate MQTT2_v1_eg 2021-09-25 22:36:18 last_run_stats_startTime 1632602155000
setstate MQTT2_v1_eg 2021-09-25 22:27:14 mainBrush 187.8
setstate MQTT2_v1_eg 2021-09-25 22:23:35 message ok
setstate MQTT2_v1_eg 2021-09-25 22:25:00 message_1 ok
setstate MQTT2_v1_eg 2021-09-25 22:37:35 pct 2
setstate MQTT2_v1_eg 2021-09-25 22:23:56 sensor 28.8
setstate MQTT2_v1_eg 2021-09-25 22:27:14 sideBrush 87.8
setstate MQTT2_v1_eg 2021-09-25 22:37:51 state docked
setstate MQTT2_v1_eg 2021-09-25 22:37:49 updated 1632602268919
setstate MQTT2_v1_eg 2021-09-25 22:36:45 valetudo_state_id 8
setstate MQTT2_v1_eg 2021-09-25 22:36:45 valetudo_state_name Charging