[GELÖST] Shelly 2.5 btn_type Schalten / "Kindersicherung"

Begonnen von draddy, 27 Februar 2022, 11:26:42

Vorheriges Thema - Nächstes Thema

MadMax-FHEM

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
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

MadMax-FHEM

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
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

MadMax-FHEM

#17
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
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

draddy

hi Joachim,

erstmal DANKE ;)

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

gebe dann nochmal Rückmeldung ;)

Lg
Jens
OMV5@AsRock j3455 8GB RAM
FHEM@Docker, Shelly "starter pack" 4x PlugS, 2x Bulb Duo RGB, Shelly 2.5, Shelly Plus 1, DoorBird 2103V

MadMax-FHEM

#19
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
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

draddy

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.
OMV5@AsRock j3455 8GB RAM
FHEM@Docker, Shelly "starter pack" 4x PlugS, 2x Bulb Duo RGB, Shelly 2.5, Shelly Plus 1, DoorBird 2103V

draddy

#21
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!
OMV5@AsRock j3455 8GB RAM
FHEM@Docker, Shelly "starter pack" 4x PlugS, 2x Bulb Duo RGB, Shelly 2.5, Shelly Plus 1, DoorBird 2103V

MadMax-FHEM

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
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

draddy

hoffe passt so, hab nix gefunden ums anders zu taggen ;)
OMV5@AsRock j3455 8GB RAM
FHEM@Docker, Shelly "starter pack" 4x PlugS, 2x Bulb Duo RGB, Shelly 2.5, Shelly Plus 1, DoorBird 2103V

MadMax-FHEM

FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

draddy

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
OMV5@AsRock j3455 8GB RAM
FHEM@Docker, Shelly "starter pack" 4x PlugS, 2x Bulb Duo RGB, Shelly 2.5, Shelly Plus 1, DoorBird 2103V

MadMax-FHEM

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
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

draddy

alles klar, so hab ichs auch gemacht, dann sind wir aufm gleichen stand in dem punkt xD
OMV5@AsRock j3455 8GB RAM
FHEM@Docker, Shelly "starter pack" 4x PlugS, 2x Bulb Duo RGB, Shelly 2.5, Shelly Plus 1, DoorBird 2103V

TomLee

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

draddy

#29
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
OMV5@AsRock j3455 8GB RAM
FHEM@Docker, Shelly "starter pack" 4x PlugS, 2x Bulb Duo RGB, Shelly 2.5, Shelly Plus 1, DoorBird 2103V