Moin :-)
Ich habe im Wohnzimmer 2 Rollos an einer Fensterfront und würde gern beide mit einem Device steuern.
Nun scheint es so, als könne man einen State nicht auf 2 Topics simultan publishen.
Oder habe ich was übersehen?
Überlege schon es nun mit 2 unterschiedlichen publishSets zu machen und eine Eventmap zu bauen, die den State auf beide bringt. Aber da scheiter ich gerade auch dran :-D
Mhhh
Mit
userReadings
pct2 { ReadingsVal("Rolladen_Couch","pct",0);; }
Wird das Reading für den anderen Rolladen zwar gesetzt aber trotz
publishSet_pct2
0 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190 200 reset reboot ota-restart homeland/haushalt/rolladen/shutter-wzr/shutter/cmd/set
Nicht ausgegeben.
Mhhh mit
pct2 {my $v = ReadingsVal("Rolladen_Couch","pct",0);; fhem("set Rolladen_Couch pct2 $v");; $v}
Kill ich gerade mein FHEM ;D :D
Zitat2020.01.03 12:39:51 1: PERL WARNING: Deep recursion on subroutine "main::CallFn" at fhem.pl line 1899.
2020.01.03 12:39:51 1: eval: {my $v = ReadingsVal("Rolladen_Couch","pct",0);; fhem("set Rolladen_Couch pct2 $v");; $v}
Hi,
ich versteh nicht was Du tust. Welcher Rolladen ist welcher? Wo ist das Userreadings? Poste bitte lieber list vom Gerät als nur so Fragmente.
Du setzt im Userreadings das gleiche Reading - da würde ich auch Verrat rufen :)
Anstatt simultan zweimal zu publishen - Du kannst natürlich auf die gleiche Nachricht in 2 Geräten subscriben :) - fände ich passender.
Gruß Otto
Huhu :-)
Also es gibt aktuell mein Device (welches 2 Devices mit publish versorgen soll):
Versucht hatte ich es nun mit userReadings pct2 {my $v = ReadingsVal("Rolladen_Couch","pct",0);; fhem("set Rolladen_Couch $v");; $v}
Das führt aber zum absoluten Loop wie es scheint O_o.
Wenn ich beide Geräte auf ein Topic listen lasse, dann habe ich keine Möglichkeit der Einzelsteuerung mehr. Die wollte ich für eventualitäten beibehalten. Gut ich könnte nun die Firmware umschreiben, dass es einen Gruppenkanal gibt... :-D Dachte aber so kann ich Gruppen lustig in FHEM definieren.
Das Steuerdevice:
Internals:
CHANGED
FUUID 5e0ea6d1-f33f-bf4c-a7f6-a478d53963b810ff
FVERSION 10_MQTT_DEVICE.pm:0.173620/2018-09-17
IODev MQTT_Broker
NAME Rolladen_Couch
NR 182
STATE 0
TYPE MQTT_DEVICE
qos *:2
retain *:1
READINGS:
2020-01-03 13:28:45 online ready
2020-01-03 13:28:45 pct 0
2020-01-03 13:28:45 pct2 0
2020-01-03 13:28:45 transmission-state incoming publish received
message_ids:
publishSets:
pct:
topic homeland/haushalt/rolladen/shutter-wzl/shutter/cmd/set
values:
0
10
20
30
40
50
60
70
80
90
100
110
120
130
140
150
160
170
180
190
200
reset
reboot
ota-restart
pct2:
topic homeland/haushalt/rolladen/shutter-wzr/shutter/cmd/set
values:
0
10
20
30
40
50
60
70
80
90
100
110
120
130
140
150
160
170
180
190
200
reset
reboot
ota-restart
sets:
pct 0,10,20,30,40,50,60,70,80,90,100,110,120,130,140,150,160,170,180,190,200,reset,reboot,ota-restart
pct2 0,10,20,30,40,50,60,70,80,90,100,110,120,130,140,150,160,170,180,190,200,reset,reboot,ota-restart
subscribe:
homeland/haushalt/rolladen/shutter-wzr/$state
homeland/haushalt/rolladen/shutter-wzr/shutter/cmd
subscribeExpr:
^homeland\/haushalt\/rolladen\/shutter-wzr\/\$state$
^homeland\/haushalt\/rolladen\/shutter-wzr\/shutter\/cmd$
subscribeQos:
homeland/haushalt/rolladen/shutter-wzr/$state 0
homeland/haushalt/rolladen/shutter-wzr/shutter/cmd 0
subscribeReadings:
homeland/haushalt/rolladen/shutter-wzr/$state:
cmd
name online
homeland/haushalt/rolladen/shutter-wzr/shutter/cmd:
cmd
name pct
Attributes:
IODev MQTT_Broker
alexaName Rolladen Arbeitszimmer
alexaRoom Arbeitszimmer
devStateIcon 0:fts_window_1w 10:fts_shutter_10 20:fts_shutter_20 30:fts_shutter_30 40:fts_shutter_40 50:fts_shutter_50 60:fts_shutter_60 70:fts_shutter_70 80:fts_shutter_80 90:fts_shutter_90 100:fts_shutter_100 200:fts_shutter_100
event-on-update-reading pct pct2
eventMap { usr=>{ 'auf'=>'pct 0', 'zu'=>'pct 200', '^(\d{2,3})' => 'pct $1' } }
genericDeviceType blind
group Rolladen
icon fts_shutter
publishSet_pct 0 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190 200 reset reboot ota-restart homeland/haushalt/rolladen/shutter-wzl/shutter/cmd/set
publishSet_pct2 0 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190 200 reset reboot ota-restart homeland/haushalt/rolladen/shutter-wzr/shutter/cmd/set
qos 2
retain 1
room Echo,Rolladen,Wohnzimmer
stateFormat pct
subscribeReading_online homeland/haushalt/rolladen/shutter-wzr/$state
subscribeReading_pct homeland/haushalt/rolladen/shutter-wzr/shutter/cmd
userReadings pct2 {my $v = ReadingsVal("Rolladen_Couch","pct",0);; $v}
webCmd auf:10:20:30:40:50:60:70:80:90:100:110:120:130:140:150:160:170:180:190:zu
Dann gibt es einmal Rolladen Links:
Internals:
FUUID 5e0ea68e-f33f-bf4c-8c21-3febf0a339852eca
FVERSION 10_MQTT_DEVICE.pm:0.173620/2018-09-17
IODev MQTT_Broker
NAME Rolladen_WZL
NR 181
STATE 0
TYPE MQTT_DEVICE
qos *:2
retain *:1
READINGS:
2020-01-03 13:28:44 online ready
2020-01-03 13:28:44 pct 0
2020-01-03 13:28:44 transmission-state incoming publish received
message_ids:
publishSets:
pct:
topic homeland/haushalt/rolladen/shutter-wzl/shutter/cmd/set
values:
0
10
20
30
40
50
60
70
80
90
100
110
120
130
140
150
160
170
180
190
200
reset
reboot
ota-restart
sets:
pct 0,10,20,30,40,50,60,70,80,90,100,110,120,130,140,150,160,170,180,190,200,reset,reboot,ota-restart
subscribe:
homeland/haushalt/rolladen/shutter-wzl/$state
homeland/haushalt/rolladen/shutter-wzl/shutter/cmd
subscribeExpr:
^homeland\/haushalt\/rolladen\/shutter-wzl\/\$state$
^homeland\/haushalt\/rolladen\/shutter-wzl\/shutter\/cmd$
subscribeQos:
homeland/haushalt/rolladen/shutter-wzl/$state 0
homeland/haushalt/rolladen/shutter-wzl/shutter/cmd 0
subscribeReadings:
homeland/haushalt/rolladen/shutter-wzl/$state:
cmd
name online
homeland/haushalt/rolladen/shutter-wzl/shutter/cmd:
cmd
name pct
Attributes:
IODev MQTT_Broker
alexaName Rolladen Arbeitszimmer
alexaRoom Arbeitszimmer
devStateIcon 0:fts_window_1w 10:fts_shutter_10 20:fts_shutter_20 30:fts_shutter_30 40:fts_shutter_40 50:fts_shutter_50 60:fts_shutter_60 70:fts_shutter_70 80:fts_shutter_80 90:fts_shutter_90 100:fts_shutter_100 200:fts_shutter_100
eventMap { usr=>{ 'auf'=>'pct 0', 'zu'=>'pct 200', '^(\d{2,3})' => 'pct $1' } }
genericDeviceType blind
group Rolladen
icon fts_shutter
publishSet_pct 0 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190 200 reset reboot ota-restart homeland/haushalt/rolladen/shutter-wzl/shutter/cmd/set
qos 2
retain 1
room Echo,Rolladen,Wohnzimmer
stateFormat pct
subscribeReading_online homeland/haushalt/rolladen/shutter-wzl/$state
subscribeReading_pct homeland/haushalt/rolladen/shutter-wzl/shutter/cmd
webCmd auf:10:20:30:40:50:60:70:80:90:100:110:120:130:140:150:160:170:180:190:zu
Und den Rolladen rechts:
Internals:
FUUID 5dfe1837-f33f-bf4c-c8eb-aca5297623c07009
FVERSION 10_MQTT_DEVICE.pm:0.173620/2018-09-17
IODev MQTT_Broker
NAME Rolladen_WZR
NR 176
STATE 0
TYPE MQTT_DEVICE
qos *:2
retain *:1
READINGS:
2020-01-03 13:28:45 online ready
2020-01-03 13:28:45 pct 0
2020-01-03 13:28:45 transmission-state incoming publish received
message_ids:
publishSets:
pct:
topic homeland/haushalt/rolladen/shutter-wzr/shutter/cmd/set
values:
0
10
20
30
40
50
60
70
80
90
100
110
120
130
140
150
160
170
180
190
200
reset
reboot
ota-restart
sets:
pct 0,10,20,30,40,50,60,70,80,90,100,110,120,130,140,150,160,170,180,190,200,reset,reboot,ota-restart
subscribe:
homeland/haushalt/rolladen/shutter-wzr/$state
homeland/haushalt/rolladen/shutter-wzr/shutter/cmd
subscribeExpr:
^homeland\/haushalt\/rolladen\/shutter-wzr\/\$state$
^homeland\/haushalt\/rolladen\/shutter-wzr\/shutter\/cmd$
subscribeQos:
homeland/haushalt/rolladen/shutter-wzr/$state 0
homeland/haushalt/rolladen/shutter-wzr/shutter/cmd 0
subscribeReadings:
homeland/haushalt/rolladen/shutter-wzr/$state:
cmd
name online
homeland/haushalt/rolladen/shutter-wzr/shutter/cmd:
cmd
name pct
Attributes:
IODev MQTT_Broker
alexaName Rolladen Arbeitszimmer
alexaRoom Arbeitszimmer
devStateIcon 0:fts_window_1w 10:fts_shutter_10 20:fts_shutter_20 30:fts_shutter_30 40:fts_shutter_40 50:fts_shutter_50 60:fts_shutter_60 70:fts_shutter_70 80:fts_shutter_80 90:fts_shutter_90 100:fts_shutter_100 200:fts_shutter_100
eventMap { usr=>{ 'auf'=>'pct 0', 'zu'=>'pct 200', '^(\d{2,3})' => 'pct $1' } }
genericDeviceType blind
group Rolladen
icon fts_shutter
publishSet_pct 0 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190 200 reset reboot ota-restart homeland/haushalt/rolladen/shutter-wzr/shutter/cmd/set
qos 2
retain 1
room Echo,Rolladen,Wohnzimmer
stateFormat pct
subscribeReading_online homeland/haushalt/rolladen/shutter-wzr/$state
subscribeReading_pct homeland/haushalt/rolladen/shutter-wzr/shutter/cmd
webCmd auf:10:20:30:40:50:60:70:80:90:100:110:120:130:140:150:160:170:180:190:zu
Ach verdammt... du hast Recht :-D
Es ist viel einfacher kurz ein sub auf ein Gruppentopic zu machen was dann in jedem Gerät auf das eigene Topic das set macht :-D
Aber interessant wäre es, ob es in FEHM geht.
BTW: Die Kurzform wäre: ;)
userReadings pct2 {ReadingsVal($name,"pct",0)}
Aber dann ein set auf das eigene Device muss zum Loop führen, was sollte er sonst machen. ::)
Du könntest eventuell mit setstate (https://commandref.fhem.de/#setstate)arbeiten, das erzeugt keinen Event. Aber den brauchst Du ja scheinbar sogar.
Oder vielleicht auch mit trigger so in der Art userReadings pct2:pct {} aber dann eben nicht pct setzen!
Aber Erfahrungsgemäß gibt es immer Besonderheiten wenn man userReadings zu so etwas mißbrauchen will. userReadings ist eben kein notify.
Ich habe keine Ahnung mit dem MQTT Device, deswegen kann ich den Gedanken mit dem publishen nicht wirklich verstehen :-[
Gruß Otto
Das mit dem Gruppentopic macht dann Sinn, wenn man immer identische Stände hat und haben soll. Würde aber wetten, dass das nicht zu 100% garantiert sein wird, und wenn es "nur" wg. Beschattung usw. ist.
Alternative: structure?
(Das bißchen mehr an MQTT-Verkehr sollte keine Probleme machen).
Ich habe mich dazu aufgerafft, den von Homie ( https://github.com/homieiot/homie-esp8266/tree/v3.0 ) bereitgestellten Broadcast mal zu nutzen.
Bin auch schon gut weit, so das ich das nachher in alle Rolladen integrieren kann und dann einfach ne freie Menge an Geräten auf eine Position setzen kann :-)
Structure wäre auch gegangen - so bin ich nun aber noch flexibler kann jedem Gerät sagen auf Gruppe 9 reagiert ihr alle und bei 2 nur ihr beiden und bei 3 ihr vier Geräte... etc :-)
Per MQTT kommt da dann "9|110" - das erste ist die Gruppe das zweite die anzufahrende Position.
Ich danke euch für Ideen und Hilfe :-)
Zitat von: Otto123 am 03 Januar 2020, 16:47:25
BTW: Die Kurzform wäre: ;)
userReadings pct2 {ReadingsVal($name,"pct",0)}
Gruß Otto
Kann ich da irgendwie noch Zeichen einschleusen ? :-D
Müsste vor dem wert aus pct noch "1|" haben :-)
@Master_Nick
Angenommen, ich habe die Frage verstanden, dann probier mal
userReadings pct2 { "1|".ReadingsVal($name,"pct",0) }
Perfekt! 8) Genau das meinte ich.
Habe aber natürlich wieder nicht bedacht, dass das userreading beim setzen kein Event erzeugt. Entweder bastel ich da nun ein Doif oder es geht mittels eines weiteren userreading:
pcttemp {my $v = "1|".ReadingsVal("Rolladen_Couch","pct",0);; fhem("set Rolladen_Couch pct2 $v");; $v}
Also erst pcttemp aus pct triggern und als befehl pct2 setzen.... scheint aber wieder nen Loop zu ergeben (verstehen tu ich das gerade nicht).
Wir drehen uns im Kreis :o
Nochmal ganz deutlich - in Kurzform: das hier "fhem("set Rolladen_Couch pct2 $v")" in einem userReadings -> ist Sch...
Mach für sowas ein notify!!!
Und ein völlig unspezifischer Trigger "pcttemp" ohne etwas :dahinter ist auch meist auch nicht optimal
;D ;D
Hihi.
Ist ja gut :-D
Ich baue lieber DOIFs - allterdings bin ich mir gerade unklar, ob da ein DOIF das tun kann was ein Notify von Haus aus kann.... scheitert schon beim "Reagiere auf Änderung bei Device "Rolladen_Couch"" :-D
Ich dachte immer das Notify ist abgelöst vom DOIF.
([Rolladen_Couch:pct]) (set Rolladen_Couch broadcast 1|[Rolladen_Couch:pct])
Das set geht schon mal.... aber die Bedingung löst nicht aus :-D
Zitat von: Master_Nick am 04 Januar 2020, 12:41:50
Ich dachte immer das Notify ist abgelöst vom DOIF.
Oh je :o
Ich sehe es eher so: DOIF entwickelt sich zum parallel Universum ;)
Wie Du es machst ist egal, aber versuch die Dinge zu verstehen und nicht nach Belieben zu verbiegen :)
Natürlich kann ein DOIF das was notify auch kann, die Frage ist wie gut oder wie einfach und mit welchem Syntax ;D
Und auch mit notify oder DOIF kann man Schleifen bauen ;)
Mhh weiß jemand wie ich mittels DOIF auf die "Änderung" eines spezifischen Readings eines devices reagiere`(Bedingunsteil)? Ohne, dass ich sage es muss ungleich, gleich, größer, kleiner, etc... sein :-D ?
*EDIT* Oh... sehe gerade ich bekomme kein Event durch mein Device - spooky O_o dabei ist es ein normales MQTT Device.
Ach du schande... ich hatte ein event on ... definiert irgendwann mal....
ERLEDIGT geht alles :-D DANKE EUCH!