FHEM Forum

FHEM - Hausautomations-Systeme => Sonstige Systeme => Thema gestartet von: draddy am 27 Februar 2022, 11:26:42

Titel: [GELÖST] Shelly 2.5 btn_type Schalten / "Kindersicherung"
Beitrag von: draddy am 27 Februar 2022, 11:26:42
Hallo zusammen,
ich bin der neue, komme vermutlich jetzt öfter ;)

suche eine Möglichkeit, bei einem Shelly (in dem Fall Shelly 2.5 im relay mode) eine art "Kindersicherung" einzubauen, indem ich den Angeschlossenen Schalter "deaktiviere".

man kann mit
set <shellydevice> config btn_type detached 0
in der Befehlszeile von FHEM den Button Type für relay 0 umstellen - damit der angeschlossene Schalter keine Funktion mehr hat. Mit dem gleichen Befehl und edge statt detached entsprechend zurück auf den (bei mir) Regelbetrieb.

analog dazu gibt es das get
get <shellydevice> config btn_type 0

soweit gut.
jetzt würde ich, damit ich das ganze am besten per devStateIcon schalten kann das irgendwie als reading brauchen, auf welches ich zugreifen kann, und da scheitere ich als FHEM Anfänger aktuell ;)

hoffe ist soweit verständlich was ich vor habe.

Lg
Jens
Titel: Antw:Shelly 2.5 btn_type Schalten / "Kindersicherung"
Beitrag von: tik-tak-tok am 27 Februar 2022, 12:10:07
Hi Jens,

ich habe mir mit einem schaltbaren Dummy + einem DOIF etwas ähnliches konfiguriert.

Die Poolpumpe (welche die Solarheizung + Umwälzung steuert) möchte ich mal nur 1 Stunde aber manchmal auch 5 Stunden laufen lassen.
FHEM regelt das und ich schalte den Dummy entsprechend.

Anstelle von "GetHttpFile("192.168.5.50:80", "/relay/1?turn=on&timer=3600"" musst du deine passende Syntax einstellen.

DOIF:
defmod PoolPumpeDOIF DOIF ([PoolPumpe1Std] eq "on")\
(set PoolPumpeDauer off)\
DOELSEIF\
([PoolPumpeDauer] eq "on")\
(set PoolPumpe1Std off)\
DOELSEIF\
([PoolPumpe1Std] eq "on")\
(set PoolPumpe1Std on-for-timer 3600)\
DOELSEIF\
([PoolPumpeDauer] eq "on")\
(set PoolPumpeDauer on-for-timer 18000)
attr PoolPumpeDOIF alias PoolPumpeDOIF
attr PoolPumpeDOIF do always
attr PoolPumpeDOIF room 0.0 Gesamt-> 0.9 Aussen
attr PoolPumpeDOIF wait 0:0:0:0

setstate PoolPumpeDOIF initialize
setstate PoolPumpeDOIF 2021-10-08 09:57:39 Device PoolPumpeDauer
setstate PoolPumpeDOIF 2021-10-08 09:57:38 e_PoolPumpe1Std_STATE off
setstate PoolPumpeDOIF 2021-10-08 09:57:39 e_PoolPumpeDauer_STATE off
setstate PoolPumpeDOIF 2021-10-08 10:43:47 mode enabled
setstate PoolPumpeDOIF 2021-10-08 10:43:47 state initialize



Notify hierzu:
defmod PoolPumpeDauer_notify notify PoolPumpeDauer:on { GetHttpFile("192.168.5.50:80", "/relay/1?turn=on&timer=18000") }
attr PoolPumpeDauer_notify alias PoolPumpeDauer_notify
attr PoolPumpeDauer_notify room 0.0 Gesamt-> 0.9 Aussen

setstate PoolPumpeDauer_notify active
setstate PoolPumpeDauer_notify 2022-02-11 14:40:14 state active


Notify zwei hierzu:
defmod PoolPumpeOff_notify notify PoolPumpeDauer:off { GetHttpFile("192.168.5.50:80", "/relay/1?turn=on&timer=3600")}
attr PoolPumpeOff_notify alias PoolPumpeOff_notify
attr PoolPumpeOff_notify disable 0
attr PoolPumpeOff_notify room 0.0 Gesamt-> 0.9 Aussen

setstate PoolPumpeOff_notify active
setstate PoolPumpeOff_notify 2022-02-11 14:40:14 state active

Dummy1:
defmod PoolPumpe1Std dummy
attr PoolPumpe1Std alias PoolPumpe1Std
attr PoolPumpe1Std genericDeviceType switch
attr PoolPumpe1Std room 0.0 Gesamt-> 0.9 Aussen,Homekit
attr PoolPumpe1Std setList on off
attr PoolPumpe1Std siriName PoolPumpe
attr PoolPumpe1Std useSetExtensions 1

setstate PoolPumpe1Std off
setstate PoolPumpe1Std 2021-10-08 09:57:38 state off

Dummy2:
defmod PoolPumpeDauer dummy
attr PoolPumpeDauer alias PoolPumpeDauer
attr PoolPumpeDauer genericDeviceType switch
attr PoolPumpeDauer room 0.0 Gesamt-> 0.9 Aussen,Homekit
attr PoolPumpeDauer setList on off
attr PoolPumpeDauer useSetExtensions 1

setstate PoolPumpeDauer off
setstate PoolPumpeDauer 2021-10-08 09:57:39 state off

Damit schalte ich den Timer des Shellys.
Das kannst du dir passend umschreiben auf deinen Anwendungsfall.

Schau dir die API des Shellys an - so kannst du ihn per http direkt ansteuern bzw. den Switch Mode ändern.

Viel Erfolg :-)
Titel: Antw:Shelly 2.5 btn_type Schalten / "Kindersicherung"
Beitrag von: draddy am 27 Februar 2022, 13:43:18
hi tik tak tok,

nun, das shelly module hat ja die Möglichkeit genau diesen btn  Status abzufragen und zu setzen.

wenn ich das ganze jetzt irgendwie als reading bekomme, kann ich auf  doif und vorallem dummy verzichten.

ich müsste nur "set <device> config btn_type detached 0" so hinbringen, das ich es als z.b. myBtnType mit wert edge oder detached abrufen und ändern kann.

ziel wäre halt ein zusätzliches statusIcon (z.b. schloss) mit dem ich zwischen edge und detached  toggeln kann.
Titel: Antw:Shelly 2.5 btn_type Schalten / "Kindersicherung"
Beitrag von: MadMax-FHEM am 27 Februar 2022, 13:55:22
Poste doch mal ein list vom Shelly Device...

Gruß, Joachim
Titel: Antw:Shelly 2.5 btn_type Schalten / "Kindersicherung"
Beitrag von: draddy am 27 Februar 2022, 14:05:05
hi,

hier ein raw

defmod Teststellung2.5_noWebCmd Shelly 192.168.177.160
attr Teststellung2.5_noWebCmd devStateIcon 1.on:light_ceiling@yellow:off+0 1.off:light_ceiling_off:on+0 2.on:light_ceiling@yellow:off+1 2.off:light_ceiling_off:on+1 Schreibtisch:noIcon:toggle+0  Arbeitstisch:noIcon:toggle+1
attr Teststellung2.5_noWebCmd devStateStyle style="text-align:right;;;;font-weight:bold;;;;
attr Teststellung2.5_noWebCmd icon light_office@3399FF
attr Teststellung2.5_noWebCmd interval 30
attr Teststellung2.5_noWebCmd mode relay
attr Teststellung2.5_noWebCmd model shelly2.5
attr Teststellung2.5_noWebCmd room FITS,TestUmgebung
attr Teststellung2.5_noWebCmd stateFormat Schreibtisch\
1:relay_0\
<br>\
Arbeitstisch\
2:relay_1
attr Teststellung2.5_noWebCmd webCmd :

setstate Teststellung2.5_noWebCmd Schreibtisch\
1:off\
<br>\
Arbeitstisch\
2:off
setstate Teststellung2.5_noWebCmd 2022-02-25 22:38:44 cloud disabled
setstate Teststellung2.5_noWebCmd 2022-02-27 09:57:09 config btn_type=detached [channel 0]
setstate Teststellung2.5_noWebCmd 2022-02-27 10:36:29 energy_0 8.7
setstate Teststellung2.5_noWebCmd 2022-02-27 01:30:28 energy_1 9.2
setstate Teststellung2.5_noWebCmd 2022-02-25 22:38:44 firmware v1.11.8
setstate Teststellung2.5_noWebCmd 2022-02-27 14:12:17 inttemp 49.24
setstate Teststellung2.5_noWebCmd 2022-02-27 10:14:28 network <html>connected to <a href="http://192.168.177.160">192.168.177.160</a></html>
setstate Teststellung2.5_noWebCmd 2022-02-27 10:36:52 overpower_0 0
setstate Teststellung2.5_noWebCmd 2022-02-27 10:36:53 overpower_1 0
setstate Teststellung2.5_noWebCmd 2022-02-27 10:36:53 power_0 0
setstate Teststellung2.5_noWebCmd 2022-02-27 10:36:54 power_1 0
setstate Teststellung2.5_noWebCmd 2022-02-27 10:36:52 relay_0 off
setstate Teststellung2.5_noWebCmd 2022-02-27 10:36:53 relay_1 off
setstate Teststellung2.5_noWebCmd 2022-02-27 10:36:53 state OK


hoffe du meinst das ;)
Titel: Antw:Shelly 2.5 btn_type Schalten / "Kindersicherung"
Beitrag von: MadMax-FHEM am 27 Februar 2022, 14:23:38
Naja raw geht schon, da muss/kann man sich das ja "zusammenbasteln"...

Ansonsten war "list Devicename" gemeint ;)

Bin nur grad unterwegs, muss ich später schauen...

Gruß, Joachim
Titel: Antw:Shelly 2.5 btn_type Schalten / "Kindersicherung"
Beitrag von: draddy am 27 Februar 2022, 14:30:35
aha xD

ok auch das lässt sich regeln ;)

danke schonmal!


Internals:
   DEF        192.168.177.160
   DURATION   0
   FUUID      62194c64-f33f-0d8f-9a0c-8c491614b5fc0f00
   FVERSION   36_Shelly.pm:v3.4.0-s25465/2022-01-14
   INTERVAL   30
   NAME       Teststellung2.5_noWebCmd
   NR         63
   SHELLYID   shellyswitch25-40F5202E0ABD
   STATE      Schreibtisch
1:off
<br>
Arbeitstisch
2:off
   TCPIP      192.168.177.160
   TYPE       Shelly
   READINGS:
     2022-02-25 22:38:44   cloud           disabled
     2022-02-27 09:57:09   config          btn_type=detached [channel 0]
     2022-02-27 10:36:29   energy_0        8.7
     2022-02-27 14:16:04   energy_1        9.3
     2022-02-25 22:38:44   firmware        v1.11.8
     2022-02-27 14:29:36   inttemp         49.24
     2022-02-27 10:14:28   network         <html>connected to <a href="http://192.168.177.160">192.168.177.160</a></html>
     2022-02-27 14:14:54   overpower_0     0
     2022-02-27 14:15:03   overpower_1     0
     2022-02-27 10:36:53   power_0         0
     2022-02-27 10:36:54   power_1         0
     2022-02-27 14:14:54   relay_0         off
     2022-02-27 14:15:03   relay_1         off
     2022-02-27 14:15:03   state           OK
Attributes:
   devStateIcon 1.on:light_ceiling@yellow:off+0 1.off:light_ceiling_off:on+0 2.on:light_ceiling@yellow:off+1 2.off:light_ceiling_off:on+1 Schreibtisch:noIcon:toggle+0  Arbeitstisch:noIcon:toggle+1
   devStateStyle style="text-align:right;;font-weight:bold;;
   icon       light_office@3399FF
   interval   30
   mode       relay
   model      shelly2.5
   room       FITS,TestUmgebung
   stateFormat Schreibtisch
1:relay_0
<br>
Arbeitstisch
2:relay_1
   webCmd     :
Titel: Antw:Shelly 2.5 btn_type Schalten / "Kindersicherung"
Beitrag von: MadMax-FHEM am 27 Februar 2022, 16:52:52
Du hast/hättest doch das Reading "config"?

Also ich habe ja den 2.5 auch mit dem Shelly-Modul, allerdings als "Shutter".
Ich habe etwas "rumprobiert" und folgendes funktioniert bei mir:


{my $Config=ReadingsVal("$name", "config", "n.a.");my $ShutterPos=ReadingsNum("$name", "pct", 100); my $icon="1..*:fts_shutter_100"; if($ShutterPos > 80){$icon="1..*:fts_shutter_10"}elsif($ShutterPos > 60){$icon="1..*:fts_shutter_30"}elsif($ShutterPos > 40){$icon="1..*:fts_shutter_50"}elsif($ShutterPos > 20){$icon="1..*:fts_shutter_80"}; $icon .= " 2.stopped:control_arrow_down:closed 2.moving_up:control_arrow_down 2.moving_down:control_arrow_down\@red 3..*:time_manual_mode:stop 4.moving_down:control_arrow_up 4.stopped:control_arrow_up:open 4.moving_up:control_arrow_up\@red"; if($Config =~ "detached"){$icon.=" 5..*:time_automatic:config+btn_type+edge+0"}else{$icon.=" 5..*:time_manual_mode:config+btn_type+detached+0"}; return $icon;}


Also devStateIcon und bei stateFormat folgendes:


1:pct
<br>
2:state
3:state
4:state
<br>
5:config


Ich schau mir an was du hast und versuche das mal anzupassen...
...oder du baust selbst entsprechend um.

Ich kann nicht genau testen, da sich mein Shutter wohl (etwas) anders verhält.
Allerdings konnte ich so auch "detached" umschalten...

Die Anzeige des Icons passt nicht, da sich bei mir das Reading "config" nicht ändert...
Wenn das bei dir auch so ist, dann müsste man etwas (mehr) "faken", um zu wissen welchen Zustand man hat und daher welches Icon angezeigt werden soll und welcher Befehl beim Klick darauf ausgeführt werden soll...

EDIT: sieht bei mir halt wie folgt aus. pct macht abhängig vom "Öffnungsgrad" eben ein passendes Icon (ohne "Click-Funktion") und dann neue Zeile (<br>) nebeneinander Pfeil hoch/runter und die "Hand" zum Stoppen. Entsprechend eingefärbte Pfeile, wenn gerade in Bewegung ist. Und neu ;) drunter noch mal eine Hand, wenn nicht "detached" ist mit der Umschaltung zu detached bei Klick. Das kann ich nicht testen, weil bei mir im Reading "config" nie detached etc. steht (bei dir ja wohl schon). Allerdings wurde der Shelly bei Klick auf "detached" umgestellt, scheint also zumindest zu funktionieren... 8)

Gruß, Joachim
Titel: Antw:Shelly 2.5 btn_type Schalten / "Kindersicherung"
Beitrag von: MadMax-FHEM am 27 Februar 2022, 17:03:07
Bei dir sollte doch folgendes gehen, devSateIcon:


{my $Config=ReadingsVal("$name", "config", "n.a.");my $icon="1.on:light_ceiling\@yellow:off+0 1.off:light_ceiling_off:on+0 2.on:light_ceiling\@yellow:off+1 2.off:light_ceiling_off:on+1 Schreibtisch:noIcon:toggle+0  Arbeitstisch:noIcon:toggle+1"; if($Config =~ "detached"){$icon.=" 3..*:time_automatic:config+btn_type+edge+0"}else{$icon.=" 3..*:time_manual_mode:config+btn_type+detached+0"}; return $icon;}

EDIT: korrigiert, @ "escaped" 8)

und stateFormat:


Schreibtisch
1:relay_0
<br>
Arbeitstisch
2:relay_1
<br>
3:config


Leider kann ich das nur bedingt testen...

Gruß, Joachim
Titel: Antw:Shelly 2.5 btn_type Schalten / "Kindersicherung"
Beitrag von: draddy am 27 Februar 2022, 17:33:56
moin,
also als relay ist der 2.5 halt letztlich wie 1er shellys - nur eben mit 2 Kanälen.

attr Teststellung2.5_noWebCmd devStateIcon: Global symbol "@yellow" requires explicit package name (did you forget to declare "my @yellow"?) at (eval 20513) line 1.
Global symbol "@yellow" requires explicit package name (did you forget to declare "my @yellow"?) at (eval 20513) line 1.


bekomm den error wenn ich  versuche deinen devStateIcon code einzufügen.

das config reading ist halt nicht "verlässlich" weil da nur dann das drin steht, was ich vorher oben über set oder get gemacht habe, daher wäre halt ein "festes" reading für den button type für Kanal 0 und 1 sinnvoller aus meiner sicht oder? :)

lg jens
Titel: Antw:Shelly 2.5 btn_type Schalten / "Kindersicherung"
Beitrag von: MadMax-FHEM am 27 Februar 2022, 17:35:20
SORRY!

Hatte nur deinen "devStateIcon-Code" kopiert...
...in Perl eingebunden muss man "escapen", also statt @ ein \@

Gruß, Joachim
Titel: Antw:Shelly 2.5 btn_type Schalten / "Kindersicherung"
Beitrag von: MadMax-FHEM am 27 Februar 2022, 17:40:50
Zitat von: draddy am 27 Februar 2022, 17:33:56
das config reading ist halt nicht "verlässlich" weil da nur dann das drin steht, was ich vorher oben über set oder get gemacht habe, daher wäre halt ein "festes" reading für den button type für Kanal 0 und 1 sinnvoller aus meiner sicht oder? :)

Hallo Jens,

hm, also wenn nach einem get... das config Reading stimmt, dann müsste man nur ein get ... "nachschießen", da müsste ich aber erst selber ein wenig "experimentieren"...
...oder halt zusätzlich zum set config ... ein setreading absetzen und sich selbst ein Reading erzeugen, das dann aber auch nur richtig stimmt, wenn nur per devStateIcon umgestellt wird...

Evtl. noch ein userReadings, das halt (leider ausnamsweise auf "alles" triggert oder auf "vieles") dann ein get config ... ausführt.

Leider liefert das get config ... bei mir nichts "vernünftiges" (nehme an wegen shutter mode), kann also nicht wirklich testen, leider...

Gruß, Joachim
Titel: Antw:Shelly 2.5 btn_type Schalten / "Kindersicherung"
Beitrag von: draddy am 27 Februar 2022, 18:15:59
alles gut, dann maskiere ich gleich mal ..

zum config reading

wenn du im get auswahl mal auf registers gehst und get klickst bekommst du das hier
reset=1⟶factory reset
default_state=off|on|last|switch⟶state after power on
btn_type=momentary|toggle|edge|detached⟶type of local button
auto_on=<seconds>⟶timed on
auto_off=<seconds>⟶timed off

Set/Get these registers by calling set/get Teststellung2.5_noWebCmd config  <registername> <value> [<channel>]

(also wenigstens bei mir)

wenn ich aber jetzt z.b. ein config default_state auslöse, ist das config reading halt
config  default_state=last [channel 0]

am ende muss ich das ganze eben auch für beide channels machen können, wobei ich das dann hin bekommen sollte, wenn es einmal sauber für einen läuft.

weiters habe ich halt bewusst KEINEN devChannel gesetzt, weil es diesen bei mir nicht gibt, daher ja auch die andere config alles mit 0 und 1 immer was eben relay 0 und 1 entspricht ;)

defStateIcon
{my $Config=ReadingsVal("$name", "config", "n.a.");my $icon="1.on:light_ceiling\@yellow:off+0 1.off:light_ceiling_off:on+0 2.on:light_ceiling\@yellow:off+1 2.off:light_ceiling_off:on+1 Schreibtisch:noIcon:toggle+0  Arbeitstisch:noIcon:toggle+1"; if($Config =~ "detached"){$icon.=" 3..*:time_automatic:config+btn_type+edge+0"}else{$icon.=" 3..*:time_manual_mode:config+btn_type+detached+0"}; if($Config =~ "detached"){$icon.=" 4..*:time_automatic:config+btn_type+edge+1"}else{$icon.=" 4..*:time_manual_mode:config+btn_type+detached+1"}; return $icon;}


stateFormat:
Schreibtisch
3.config
1:relay_0
<br>
Arbeitstisch
4:config_1
2:relay_1

(habe jetzt einfach die configs nur ergänzt, also nicht über 3 1 4 2 wundern xD)
das schalten scheint zu gehen wenn ich das richtig sehe, allerdings immer nur das eine oder andere, weil eben die saubere zuordnung für relay 0 und 1 fehlt aktuell.
auch ändert sich das icon für beide, wenn ich den status ändere.

bis auf icons würde ich mir das am ende so vorstellen:

Titel: Antw:Shelly 2.5 btn_type Schalten / "Kindersicherung"
Beitrag von: MadMax-FHEM am 27 Februar 2022, 18:32:03
Ich merke schon: so viel hab ich mit dem Shelly Modul noch nicht "rumgespielt" ;)

Naja, bei mir kommt da einiges mehr und vieles/einiges anders...

EDIT:

reset=1⟶factory reset
default_state=stop|open|close|switch⟶state after power on
swap=true|false⟶swap open and close
input_mode=openclose|onebutton⟶two or one local button
btn_type=momentary|toggle|detached⟶type of local button
obstacle_mode=disabled|while_opening|while_closing|while_moving⟶when to watch
obstacle_action=stop|reverse⟶what to do
obstacle_power=<watt>⟶power threshold for detection
obstacle_delay=<seconds>⟶delay after motor start to watch
safety_mode=disabled|while_opening|while_closing|while_moving⟶safety mode=2nd button
safety_action=stop|pause|reverse⟶action when safety mode
safety_allowed_on_trigger=none|open|close|all⟶commands allowed in safety mode

Set/Get these registers by calling set/get Schaltaktor_WoZi_Rollo config  <registername> <value> [<channel>]


Und ich habe ja in dem Sinne keine 2 Relais mehr...
Die sind ja vom Shelly selbst (so hoffe/denke ich) "verriegelt"...

Daher kann ich nur bedingt testen... :-\

Ich werde mal schauen, ob man ein setreading hinterher bekommt.
Das würde dann zumindest die Anzeige und das Schalten etc. passend machen.

ABER (wie ja bereits ausgeführt): halt nur "stimmig", wenn per fhem geschalten wird. Wenn direkt am Shelly rumkonfiguriert wird, dann stimmt der Status im Device nat. nicht (mehr)...

Kann aber etwas dauern...

Gruß, Joachim
Titel: Antw:Shelly 2.5 btn_type Schalten / "Kindersicherung"
Beitrag von: draddy am 27 Februar 2022, 18:53:18
hi Joachim,

ja, sind anders aus bei dir, und ja, im roller betrieb sollte er verriegeln, son rollo motor kann schlecht rauf und runter zur gleichen zeit xD

wurde aber, wenn ichs richtig gesehen hab, hier oder im shelly forum mehrfach getestet, und er lässt in keiner weise zu das rauf und runter gleichzeitig geschaltet wird :D

wiegesagt, für meine sache wären halt 2 readings "wichtig" - damit er den Typ von jedem relay kennt, das dieser nicht stimmen würde, wenn ich den status im shelly sofort ändere, halte ich für zu vernachlässigen ... selbst wenn ich das mal machen würde, würde nichts passieren was  fhem nicht wieder regeln kann, im schlimmsten fall denkt fhem er ist im detach aber der schalter ist im edge ... dann zeigt er das falsche symbol, schaltet einmal "falsch" bzw. garnicht aber im nächsten anlauf ist er ja wieder syncron, UND von dieser schaltung hängen keine leben ab ;)

schonmal danke für deine hilfe.

versuche, wenn du was neues hast, schnellst möglich zu testen ;)
Titel: Antw:Shelly 2.5 btn_type Schalten / "Kindersicherung"
Beitrag von: MadMax-FHEM am 27 Februar 2022, 20:08:47
Also ich hab mal ein wenig rumgespielt... ;)

Gut ein reines "copy/paste" kann ich leider nicht liefern, versuche es aber... 8)

Es könnte wohl mit cmdalias klappen, hier mal die Theorie (getestet an einem dummy ;)  ):

es muss ein cmdalias für relais0-detach und relais0-edge erstellt werden, gleiches dann für relais1.
Mal das Prinzip.

Ich versuche das mal, kann es aber nicht wirklich testen (da kommst du ;)  ) RawDef:


defmod caRelais0Detach cmdalias set <shellydevice> config btn_type detached 0 AS set <shellydevice> config btn_type detached 0;; sleep 0.1;; setreading <shellydevice> relais_0_sw detached



defmod caRelais0Edge cmdalias set <shellydevice> config btn_type edge 0 AS set <shellydevice> config btn_type edge 0;; sleep 0.1;; setreading <shellydevice> relais_0_sw edge


Du könntest ja mal die beiden cmdalias anlegen, dann sollte eigentlich (so hoffe ich) beim Ausführen des set-Befehls dieser ausgeführt werden UND zusätzlich eben ein Reading im Device auftauchen, das eben den geschalteten Status anzeigen sollte...

Wenn das geht, dann muss man ja nur das devStateIcon und stateFormat auf dieses Reading umstellen.
Dann eben noch 2 cmdalias für das Relais1 sofern da nat. der set Befehl auch anders lautet, also (so "interpoliere" ich): set <shellydevice> config btn_type detached 1

Nette Idee, vielleicht etwas abgewandelt, so geht es leider nicht (hatte ich schon befürchtet):

2022.02.27 20:05:16 3: cmdalias caRelais0Detach called recursively, skipping execution


Gruß, Joachim
Titel: Antw:Shelly 2.5 btn_type Schalten / "Kindersicherung"
Beitrag von: MadMax-FHEM am 27 Februar 2022, 20:14:50
Ich hab evtl. eine Variante gefunden :)

Wir "erfinden" einfach ein neues Kommando für den Shelly!


defmod caRelais0Detach cmdalias set <shellydevice> detach AS set <shellydevice> config btn_type detached 0;; sleep 0.1;; setreading <shellydevice> relais_0_sw detached



defmod caRelais0Edge cmdalias set <shellydevice> edge AS set <shellydevice> config btn_type edge 0;; sleep 0.1;; setreading <shellydevice> relais_0_sw edge


Somit "versteht" der Shelly <shellydevice> dann eben auch:


set <shellydevice> detach/edge


D.h. noch gleiches für Relais1 und dann eben stateFormat mit den neuen Readings relais_0_sw bzw. relais_1_sw (Namen kannst du nat. anpassen ;)  ) und eben im devStateIcon dann als "Befehl" detach/edge...

Evtl. reicht dir ja die Beschreibung...

Ansonsten versuche ich evtl. morgen mal die komplette Lösung zu posten...

Gruß, Joachim
Titel: Antw:Shelly 2.5 btn_type Schalten / "Kindersicherung"
Beitrag von: MadMax-FHEM am 27 Februar 2022, 20:39:32
Also ich hab das nun mal für mich für einen Kanal (hab ja nicht wirklich Kanäle ;)  ) gebastelt.

Ich poste mal was ich habe, du musst halt evtl. anpassen...

Hier mal die cmdalias:

defmod caRelay0Detach cmdalias set Teststellung2.5_noWebCmd detach0 AS set Teststellung2.5_noWebCmd config btn_type detached 0;; sleep 0.1;; setreading Teststellung2.5_noWebCmd relay_0_sw detached

EDIT: korrigiert: detach -> detached ;)


defmod caRelay0Default cmdalias set Teststellung2.5_noWebCmd default0 AS set Teststellung2.5_noWebCmd config btn_type edge 0;; sleep 0.1;; setreading Teststellung2.5_noWebCmd relay_0_sw default



Dann stateFormat:

Schreibtisch\
1:relay_0\
<br>\
Arbeitstisch\
2:relay_1
<br>\
3:relay_0_sw


Und noch devStateIcon:

{my $icon="1.on:light_ceiling\@yellow:off+0 1.off:light_ceiling_off:on+0 2.on:light_ceiling\@yellow:off+1 2.off:light_ceiling_off:on+1 Schreibtisch:noIcon:toggle+0  Arbeitstisch:noIcon:toggle+1"; $icon.=" 3.detached:time_manual_mode\@red:default0 3.default:time_manual_mode\@green:detach0"; return $icon;}


EDIT:
Hmm, ich sehe grad, mit dieser Lösung braucht es ja gar kein Perl ;)
Sollte also so auch gehen:

1.on:light_ceiling@yellow:off+0 1.off:light_ceiling_off:on+0 2.on:light_ceiling@yellow:off+1 2.off:light_ceiling_off:on+1 Schreibtisch:noIcon:toggle+0 Arbeitstisch:noIcon:toggle+1 3.detached:time_manual_mode@red:default0 3.default:time_manual_mode@green:detach0



Ich hoffe ich hab meiner Rückanpassung auf deine Namen etc. nichts "verdröselt"...
...bei mir hat es zumindest prima funktioniert :)

Für Relais1 dann entsprechend...
EDIT: und hier hatte ich noch einen kleinen "Fehler" ;) Also ich habe ja nur einen Kanal wenn man so will... Hier brauchen wir ja 4 neue Befehle, daher "musste" ich aus set Device detach ein set Device detach0 machen. Für Relay 1 dann eben set Device detach1 ebenso dann auch im cmdalias...
EDIT: und weil ich dann schon mal weiter rumgebastelt habe, habe ich mal "trocken" alles zusammengestellt, hier also die beiden anderen cmdalias:

defmod caRelay1Detach cmdalias set Teststellung2.5_noWebCmd detach1 AS set Teststellung2.5_noWebCmd config btn_type detached 1;; sleep 0.1;; setreading Teststellung2.5_noWebCmd relay_1_sw detached

EDIT: korrigiert: detach -> detached ;)


defmod caRelay1Default cmdalias set Teststellung2.5_noWebCmd default1 AS set Teststellung2.5_noWebCmd config btn_type edge 1;; sleep 0.1;; setreading Teststellung2.5_noWebCmd relay_1_sw default


Und das stateFormat:

Schreibtisch\
1:relay_0\
<br>\
Arbeitstisch\
2:relay_1
<br>\
3:relay_0_sw
<br>\
4:relay_1_sw


Und nat. devStateIcon:

1.on:light_ceiling@yellow:off+0 1.off:light_ceiling_off:on+0 2.on:light_ceiling@yellow:off+1 2.off:light_ceiling_off:on+1 Schreibtisch:noIcon:toggle+0 Arbeitstisch:noIcon:toggle+1 3.detached:time_manual_mode@red:default0 3.default:time_manual_mode@green:detach0 4.detached:time_manual_mode@red:default1 4.default:time_manual_mode@green:detach1



EDIT: danke! Durch dich/diese "Übung" habe ich es nun für mich eingebaut :)  Hatte "sowas" ja eh schon gesucht, um meine Schalter zu sperren, wenn das Fenster/Balkontüre auf ist. Allerdings weniger das Schalten durch "Knöpfe" in fhem sondern automatisch per Notify, wenn das Fenster auf/zu geht... Also danke für die Befehle, das andere hat mich mal dazu gebracht mir cmdalias anzuschauen ;)

EDIT: bei mir sieht es wie folgt aus. Rot und mit Hand, wenn deaktiviert und ansonsten mit Auto-Modus...

Gruß, Joachim
Titel: Antw:Shelly 2.5 btn_type Schalten / "Kindersicherung"
Beitrag von: draddy am 27 Februar 2022, 22:49:35
hi Joachim,

erstmal DANKE ;)

mach mich mal ans testen und versuche es zu verstehen :D

gebe dann nochmal Rückmeldung ;)

Lg
Jens
Titel: Antw:Shelly 2.5 btn_type Schalten / "Kindersicherung"
Beitrag von: MadMax-FHEM am 27 Februar 2022, 23:01:28
Zitat von: draddy am 27 Februar 2022, 22:49:35
hi Joachim,

erstmal DANKE ;)

mach mich mal ans testen und versuche es zu verstehen :D

gebe dann nochmal Rückmeldung ;)

Lg
Jens

Hallo Jens,

gerne und viel Erfolg!
(ich hoffe es klappt tatsächlich)

Ja, verstehen, da tue ich mich nat. leichter, weil ich habe es mir ja erarbeitet ;)

Aber eigentlich ganz einfach ;)

Miitels cmdalias "versteht" das Shelly-Device eben neue Kommandos:

set Device default0 -> schalte "normal-Modus" Relay 0
set Device detach0 -> schalte "detach-Modus" Relay 0

set Device default1 -> schalte "normal-Modus" Relay 1
set Device detach1 -> schalte "detach-Modus" Relay 1


Und hat dank cmdalias (bzw. dem dann tatsächlich ausgeführten Befehls mit dem setreading) auch 2 neue Readings mit jeweils 2 Werten:

relay_0_sw -> default/detached
relay_1_sw -> default/detached

U.U. muss man die Kommandos mal per WebCmd ausführen, also:

set Teststellung2.5_noWebCmd default0
set Teststellung2.5_noWebCmd default1


damit eben die Readings da sind auf das ja stateFormat und devStateIcon bauen...

Ich denke wenn du die beiden Befehle mal eingegeben hast (nach dem anlegen der cmdalias), dann wird es klarer so denke/hoffe ich.
Evtl. zum Verstehen eher folgende Befehle absetzen:

set Teststellung2.5_noWebCmd detach0
set Teststellung2.5_noWebCmd detach1


Aber aufpassen: die neuen Befehle stehen nat. (leider) nicht "am" Device Teststellung2.5_noWebCmd zur Verfügung (dort gibt es [nat.] nur was auch im Modul programmiert wurde)... Man kann es dort also nicht per DropDown etc. auswählen...
Sondern man kann/muss das eben in das FhemWeb-cmd eingeben...

Gruß, Joachim
Titel: Antw:Shelly 2.5 btn_type Schalten / "Kindersicherung"
Beitrag von: draddy am 27 Februar 2022, 23:21:06
Hi Joachim,

also, das Reading etc. klappt.

nur wird nicht geschaltet ^^

wenn also auf deteched steht, - und ich mit get <device> config btn_type abfrage, ist immer noch edge gesetzt - sprich der set klappt noch nicht.
Titel: Antw:Shelly 2.5 btn_type Schalten / "Kindersicherung"
Beitrag von: draddy am 27 Februar 2022, 23:49:35
habs, kleiner fehler grosse wirkung ;)

€dit: hatte die list noch angepasst ans Bild .. dabei die Lösung gelöscht ... also hier nochmal xD
FALSCH

set Teststellung2.5_noWebCmd detach0 AS set Teststellung2.5_noWebCmd config btn_type detach 0; sleep 0.1; setreading Teststellung2.5_noWebCmd relay_0_sw detached

RICHTIG

set Teststellung2.5_noWebCmd detach0 AS set Teststellung2.5_noWebCmd config btn_type detached 0; sleep 0.1; setreading Teststellung2.5_noWebCmd relay_0_sw detached


dir ist beim befehl an den shelly das "ed" runter gefallen, default (edge) hat geklappt, detach(ed) nicht ;)


hier noch list von der fertigen teststellung, sobald mein elektriker mir den shelly eingebaut hat, kann ich das (bis auf den namen) übernehmen und gut ;)

Internals:
   DEF        192.168.177.160
   DURATION   0
   FUUID      62194c64-f33f-0d8f-9a0c-8c491614b5fc0f00
   FVERSION   36_Shelly.pm:v3.4.0-s25465/2022-01-14
   INTERVAL   30
   NAME       Teststellung2.5_noWebCmd
   NR         63
   SHELLYID   shellyswitch25-40F5202E0ABD
   STATE      Schreibtisch
3:default
1:off
<br>
Arbeitstisch
4:detached
2:off

   TCPIP      192.168.177.160
   TYPE       Shelly
   OLDREADINGS:
   READINGS:
     2022-02-25 22:38:44   cloud           disabled
     2022-02-27 23:48:41   config          btn_type=detached [channel 1]
     2022-02-27 23:44:07   energy_0        9.3
     2022-02-27 19:02:15   energy_1        9.7
     2022-02-25 22:38:44   firmware        v1.11.8
     2022-02-27 23:50:38   inttemp         52.77
     2022-02-27 10:14:28   network         <html>connected to <a href="http://192.168.177.160">192.168.177.160</a></html>
     2022-02-27 23:32:05   overpower_0     0
     2022-02-27 19:59:27   overpower_1     0
     2022-02-27 23:32:06   power_0         0
     2022-02-27 23:27:02   power_1         0
     2022-02-27 23:32:05   relay_0         off
     2022-02-27 23:47:32   relay_0_sw      default
     2022-02-27 19:59:27   relay_1         off
     2022-02-27 23:48:41   relay_1_sw      detached
     2022-02-27 23:40:37   state           OK
Attributes:
   devStateIcon Schreibtisch:noIcon:toggle+0 Arbeitstisch:noIcon:toggle+1
1.on:light_ceiling@yellow:off+0 1.off:light_ceiling_off:on+0
2.on:light_ceiling@yellow:off+1 2.off:light_ceiling_off:on+1
3.detached:secur_locked@red:default0 3.default:secur_open@green:detach0
4.detached:secur_locked@red:default1 4.default:secur_open@green:detach1

   devStateStyle style="text-align:right;;font-weight:bold;;
   icon       light_office@3399FF
   interval   30
   mode       relay
   model      shelly2.5
   room       FITS,TestUmgebung
   stateFormat Schreibtisch
3:relay_0_sw
1:relay_0
<br>
Arbeitstisch
4:relay_1_sw
2:relay_1

   webCmd     :


und ein bildchen, wies ausschaut. OHNE webCmd :D

DANKE Joachim!
Titel: Antw:Shelly 2.5 btn_type Schalten / "Kindersicherung"
Beitrag von: MadMax-FHEM am 28 Februar 2022, 00:16:36
Eieiei, da ist dann wohl beim Anpassen von "mich" auf "dich" was schief gelaufen ;)
Hab's oben korrigiert...

Aber es läuft ja jetzt :)

Packst du noch ein [gelöst] o.ä. "vorne dran", danke.

Dann noch viel Spaß, Joachim
Titel: Antw:[GELÖST] Shelly 2.5 btn_type Schalten / "Kindersicherung"
Beitrag von: draddy am 28 Februar 2022, 00:49:35
hoffe passt so, hab nix gefunden ums anders zu taggen ;)
Titel: Antw:[GELÖST] Shelly 2.5 btn_type Schalten / "Kindersicherung"
Beitrag von: MadMax-FHEM am 28 Februar 2022, 00:59:11
Zitat von: draddy am 28 Februar 2022, 00:49:35
hoffe passt so, hab nix gefunden ums anders zu taggen ;)

Perfekt! :)
Titel: Antw:[GELÖST] Shelly 2.5 btn_type Schalten / "Kindersicherung"
Beitrag von: draddy am 28 Februar 2022, 14:05:29
für mein Verständnis.

wenn ich das ganze jetzt auf ein anderes Shelly 2.5 übertragen will, änder ich bei den CMD Alias alles auf den Namen des anderen 2.5 ab UND muss dem ca auch nen anderen namen geben, oder? ;)

lg jens
Titel: Antw:[GELÖST] Shelly 2.5 btn_type Schalten / "Kindersicherung"
Beitrag von: MadMax-FHEM am 28 Februar 2022, 14:35:08
Wenn du nur einen anderen Shelly statt dem jetzigen nehmen willst oder den jetzigen umbenennen willst/musst, dann musst du "nur" den Namen "im" cmdalias anpassen, der Name des cmdalias ist egal...
...wenn du einen WEITEREN Shelly haben willst, der genauso funktioniert, dann würde ich einfach rawdef der beiden cmdalias pro Kanal öffnen, den Namen des cmdalias UND den Namen des Shelly anpassen/ändern und dann "execute"...

D.h. pro Shelly, der sich so verhalten soll brauchst du eben pro Kanal zwei cmdalias.
Evtl. kann man auch mit RegEx aus den 2 cmdalias pro Kanal einen machen, evtl. sogar nur einen pro Shelly...
Aber cmdalias habe ich (vor hier) nocht nie verwendet ;)

Kurz:

jedes Device (auch cmdalias) braucht einen EIGENEN, EINDEUTIGEN Namen und für jeden Kanal gibt es eben 2 Befehle die "erfunden" werden müssen -> 2 cmdalias (2 Devices -> 2 Namen dafür)
"innerhalb" des cmdalias taucht nat. das Device auf, für das eben ein neues Kommando "erfunden" werden soll/muss...

Gruß, Joachim
Titel: Antw:[GELÖST] Shelly 2.5 btn_type Schalten / "Kindersicherung"
Beitrag von: draddy am 28 Februar 2022, 15:08:45
alles klar, so hab ichs auch gemacht, dann sind wir aufm gleichen stand in dem punkt xD
Titel: Antw:[GELÖST] Shelly 2.5 btn_type Schalten / "Kindersicherung"
Beitrag von: TomLee am 01 März 2022, 00:31:16
Hallo ihr beiden,

hab mir rein aus Interesse wie man die 2 Readings erhalten könnte das erste Mal ein Device vom Typ Shelly definiert um hier mitzukommen.

Ich hab nur 1er Shellys, kann also auch nur bedingt testen. Wenn ich ein set <devicename> config btn_type detached 0 ausführe wird der gesetzte Wert immer zuverlässig in das Reading config geschrieben (wie ich euch/es verstehe ist das nicht der Rückgabewert vom Shelly). Bei Joachim ändert sich das Reading config nicht bei einer Änderung, bei Jens schon <= und da setz ich an weil es das gleiche Verhalten wie bei mir zu sein scheint.

Die zwei zusätzlichen setter braucht man doch nicht wirklich, es geht doch nur um die zwei Readings ?

Diese beiden userReadings ändern sich nur wenn "momentary|toggle|edge|detached" in dem Reading config gematched wird, diese Werte kommen laut euren und meinem "get config registers" nur bei dem "Befehl" btn_type vor.

attr Teststellung userReadings relay_0_sw:config:.* {my $confr =ReadingsVal($name,'config','none');;my @ar=split/ /,$confr;;my $ad= $ar[2];;chop $ad;;$ad == 0 && $confr =~ m,[\=](momentary|toggle|edge|detached), ? return $1 : return ;;},\
relay_1_sw:config:.* {my $confr =ReadingsVal($name,'config','none');;my @ar=split/ /,$confr;;my $ad= $ar[2];;chop $ad;;$ad == 1 && $confr =~ m,[\=](momentary|toggle|edge|detached), ? return $1 : return ;;}


Kann man sicherlich weiter verbessern, aber was haltet Ihr (OK, nur Jens, bei Joachim kommt ja nix bei config "zurück") davon es nur mit userReadings umzusetzen, hab ich vlt. noch was übersehen ?

Mich würden bei der jetzigen Lösung die zwei zusätzlichen Devices stören, nur um den Zustand zu erhalten und dann das ganze auch noch mehrfach bei x Shellys  :o
Es ist eine mögliche Lösung wenn halt goar nix in das config-Reading "geschrieben" wird.

Gruß

Thomas
Titel: Antw:[GELÖST] Shelly 2.5 btn_type Schalten / "Kindersicherung"
Beitrag von: draddy am 01 März 2022, 01:20:55
Hi Thomas,
müsste ich mal testen, vll. morgen.

die sache bei Joachim und dir ist, ihr habt jeweils nur ein Reading, auf dem modul dafür, das  war eben beim 2.5er in relay config das Problem, ich brauch readings für 2 relays da die schalter ja sonst nicht wissen wer jetzt grade on oder off sein soll (wenigstens von den symbolen) darum ist Joachim auf die idee mit cmdalias gekommen.

nur müsste doch dann in den devStateCode auch noch das set btn_type detached | edge 0 | 1 rein oder?

weiters ist die frage, wann wird das reading ausgeführt? (bin noch nicht so ein FHEM crack - mach das erst seit kanpp 2 Wochen :D)

ich persönlich finde die sache mit den cmdalias gar nicht soo schlecht, die frage ist, könnte man das nicht optimieren / verallgemeinern damit man es quasi von jedem shelly der es benötigen würde aufrufem kann.

quasi

<cmdalias> edge 0

wobei der cmdalias natürlich in der lage sein muss, zu wissen von wem er gerufen wurde (DAS ist die frage obs geht, soo tief bin ich nicht drin)
dann kann der cmdalias die operation machen

set <caller> btn_type $1 $2 setreading <caller:relay_sw$2> edge 

wobei $1 fürs erste und $2 für das 2. übergebene Parameter (edge und 0) stehen soll

damit wäre man mit relativ wenig code und einem modul quasi maximal flexible (wenn ich jetzt nichts übersehen habe bei meiner überlegung)

ist natürlich alles pseudocode ... muss mich  da echt noch reinfuxen in fhem und  perl  wie / ob das möglich wäre.


lg
Jens
Titel: Antw:[GELÖST] Shelly 2.5 btn_type Schalten / "Kindersicherung"
Beitrag von: MadMax-FHEM am 01 März 2022, 07:09:48
Hallo Thomas,

die Idee hatte ich auch schon aber wie du selber gemerkt hast ist das Verhalten bei uns wohl anders, bei mir auf jeden Fall...
Und da konnte ich nicht testen und einen (rein) "theoretischen" Vorschlag wollte ich nicht machen... Und auch nicht meinen Shelly umkonfigurieren... ;)

@Jens: der set... kommt bei Thomas Vorschlag ganz normal ins devStateIcon. Nur in stateFomat eben die userReadings...

@Jens: ja das wäre genau die "Optimierung" von der ich gesprochen hatte. Aber ich hab mich erst "durch dich" überhaupt mit cmdalias beschäftigt... ;) Was da sonst so alles geht/ginge: (noch) keine Ahnung...

Gruß, Joachim
Titel: Antw:[GELÖST] Shelly 2.5 btn_type Schalten / "Kindersicherung"
Beitrag von: draddy am 01 März 2022, 11:02:19
here we go,

noch nicht 100% ABER!
1 cmdalias pro Shelly - sollte (theoretisch) auch für die Single bzw. Roller so klappen (DAS ist euer part zu testen ^^)

DEF vom cmdalias

set Teststellung2.5_noWebCmd mybType .* AS set $EVTPART0 config btn_type $EVTPART2 $EVTPART3; sleep 0.1; setreading $EVTPART0 $EVTPART1_$EVTPART3 $EVTPART2


Mein stateFormat

Schreibtisch
3:mybType_0
1:relay_0
<br>
Arbeitstisch
4:mybType_1
2:relay_1


und mein devStateIcon

Schreibtisch:noIcon:toggle+0 Arbeitstisch:noIcon:toggle+1
1.on:light_ceiling@yellow:off+0 1.off:light_ceiling_off:on+0
2.on:light_ceiling@yellow:off+1 2.off:light_ceiling_off:on+1
3.detached:secur_locked@red:mybType+edge+0 3.edge:secur_open@green:mybType+detached+0
4.detached:secur_locked@red:mybType+edge+1 4.edge:secur_open@green:mybType+detached+1


was ich nicht hinbekomme, ist der universal aufruf ... Daher muss (aktuell) der alias mit set <devicename> anfangen alles andere ist aber so aufgebaut, dass man das cmdalias kopiert, <devicename> austauscht, und es bereit für den nächsten shelly ist.

angesprochen wird er eben mit <befehl> <schaltermodus> <channel>  also z.b.  mybType edge 0

was ihr jetzt mal testen müsst ist, was passiert wenn ihr den mit mybType edge bzw detached ansprecht (also OHNE channel,  weil es die bei euch ja nicht wirklich gibt) von der überlegung sollte das klappen, weil $EVTPART3 einfach nicht gibt ... einzig das stateFormat müsste dann auf "mybType_" geändert werden, ODER - man baut das ganze einfach ohne _ ... dann wäre es mybType0 | 1 oder eben ohne nummer - wäre vll. auch ne möglichkeit, aber dabei seit ihr deutlich fitter als ich, also sollte das für euch klar / easy sein ^^

lg Jens