Schalter für Fritz.Box WLAN

Begonnen von mbecher, 21 März 2018, 17:26:38

Vorheriges Thema - Nächstes Thema

mbecher

Hallo,

ich habe die ein oder andere Erweiterung nun in meinem FHEM. Unter anderen auch die FritzBox. Jetzt würde ich mir gerne einen Schalter "bauen" den ich in Homekit als WLAN-Schalter für das Gäste-WLAN nutzen möchte.
Dazu habe ich folgendes gemacht:

define Gast_WLAN dummy
attr Gast_WLAN alias Gast WLAN
attr icon Gast_WLAN WLAN_Status.1
attr rooms Gast_WLAN 04_Buttons,Homebridge
attr Gast_WLAN webcmd on:off
attr Gast_WLAN devStateIcon an:WLAN_Status.1 aus:WLAN_Status.0

Wie sage ich dem Schalter jetzt, dass er das Gäste_WLAN der Fritzbox an bzw. ausschalten soll? UNd wie sehe ich dann eines der beiden Logos aus devStateIcon?
Aktuell sehe ich nur eine Lampe und daneben on off.

Wenn ich über set - on oder off schalte sehe ich die Icons. Was mache ich falsch?

Beta-User

M.E. benötigt man dafür eigentlich keinen Dummy, sondern eher einen readingsProxy (siehe commandref).
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

Bennemannc

#2
Hallo,

also bei mir kann ich mit "set Fritzbox guestWlan on" oder eben mit off das Gäste Wlan ein- und ausschalten.
Die Fritzbox ist mit "define Fritzbox FRITZBOX " definiert. Keine Ahnung wie man das umsetzt - ich würde es mit "eventMap" versuchen. das müsste dann irgendwie so /Fritzbox guestWlan on:on/Fritzbox guestWlan off:off aussehen.

Gruß Christoph
Cubietruck, Fhem 5.8
CC-RT-DN|LC-SW2-FM|RC-12|RC-19|LC-SW4-BA-PCB|LCp-SW1-BA-PCB|ES-PMSw1-Pl|LC-Bl1PBU-FM|PBI-4-FM|CC-VD|CC-TC|SEC-SC(2)|RC-KEY3-B|LC-Sw1PBU-FM|PB-2-FM|WDS100-C6-O|WDC7000|LC-Bl1-FM
Module: Dewpoint,FB_Callmonitor,HCS,Panstamp,at,notify,THRESHOLD,average,DOIF

Otto123

#3
Hi,

aus meiner Sicht, aber nicht getestet:
Dies ändern
attr Gast_WLAN devStateIcon on:WLAN_Status.1 off:WLAN_Status.0
Und ein notify dazu was die Befehle vom Dummy umsetzt
define n_GastWlan notify Gast_WLAN:(on|off) set nameDerFritzbox guestWlan $EVENT

Gruß Otto
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

mbecher

Hallo,

habe es jetzt wie folgt geändert:

attr alias Gast_WLAN Gast WLAN
attr devStateIcon Gast_WLAN on:WLAN_Status.1 off:WLAN_Status.0
attr icon Gast_WLAN WLAN_Status.1
attr room Gast_WLAN 04_Buttons
attr webCmd Gast_WLAN on:off


Damit bekomme ich das mit den Icons in Kombination mit dem Status hin.

Wenn ich aber den Befehl

define n_GastWlan Gast_WLAN:(on|off) set Fritzbox guestWlan $EVENT


eingebe, kommt die Meldung "Unknown module Gast_WLAN:(on|off)

rabehd

#5
  >:(
Zitatdefine n_GastWlan Gast_WLAN:(on|off) set Fritzbox guestWlan $EVENT
Was soll das werden?
Du musst schon alles kopieren!
Auch funktionierende Lösungen kann man hinterfragen.

Otto123

Ich sage doch immer: Zwischen Copy & Paste gehört noch das Ding zwischen den Ohren.  ;D :-[
ZitatWas soll das werden?
ZitatUnd ein notify ...

Ja sorrry, ich habe es einfach schnell hintereinandergeschrieben  ;) Klar fehlt da das wort notify. Habe oben meinen Beitrag korrigiert.

Gruß Otto

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

rabehd

Ich habe die letzte Version erst nach der Korrektur von Otto geschrieben. Ich nehme meinen "Vorwurf" zurück.

Bezüglich
ZitatZwischen Copy & Paste gehört noch das Ding zwischen den Ohren.
Sollte man benutzen, um zu verstehen was man mit paste tut.
Auch funktionierende Lösungen kann man hinterfragen.

Frank_Huber

ich würde Dummy und Notify in ein DOIF bündeln.


defmod Gast_WLAN DOIF (abc) (set Fritzbox guestWlan on)\
DOELSEIF (xyz) (set Fritzbox guestWlan off)
attr Gast_WLAN cmdState on|off
attr Gast_WLAN devStateIcon on:on:cmd_2 initialize|initialized|off:off:cmd_1
attr Gast_WLAN do always

TomLee

Hallo,

readingsProxy wurde ja schon vorgeschlagen und würde so aussehen:

defmod rp_FB_GWLAN1 readingsProxy Fritzbox1:box_guestWlan
attr rp_FB_GWLAN1 devStateIcon on:it_wifi@green:off off:it_wifi@red:on
attr rp_FB_GWLAN1 event-on-change-reading .*
attr rp_FB_GWLAN1 room Fritzbox
attr rp_FB_GWLAN1 setFn { return 'guestWlan on' if( $CMD eq 'on' );;;; return 'guestWlan off';;;; }
attr rp_FB_GWLAN1 setList on off
attr rp_FB_GWLAN1 valueFn { return 'on' if( $VALUE eq 'on' );;;; return 'off';;;; }


Gruß

Thomas

Otto123

Na da haben wir doch schon drei Varianten zusammen.
@Thomas Wenn mal der Platz auf der Systemplatte eng wird  ;) Vorschlag: Einfach ein paar Semikonlons löschen  ;D
So reicht es auch (getestet):
attr rp_FB_GWLAN1 setFn { return 'guestWlan on' if( $CMD eq 'on' );; return 'guestWlan off'}
attr rp_FB_GWLAN1 valueFn { return 'on' if( $VALUE eq 'on' );; return 'off'}


Ich bin mir als Perl Unwissender immer nicht ganz sicher über die Bedeutung der ; am Code Ende vor der schließenden } - aber ich habe sie immer weggeglassen und es funktioniert. Man sieht sie aber sehr beständig in allen Beispielen.   ???

Jetzt ist noch die Frage wer gewinnt den Preis? :) Frank hat die wenigsten Zeichen verbastelt?

Gruß Otto
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

Danke für die Aufklärung, da standen bei mir schon immer 3 ? ? ? ob die vier Semikolon wirklich nötig sind.
Da werden ja jetzt mehre GB frei bei rd. 25 readingsProxys ☺

mbecher

Okay,

das sind erstmal drei Ansätze. Mit ReadingsProxy und DOIF muss ich mich jetzt erst einmal auseinander setzen.

Melde mich, wenn was davon meine Anforderungen gelöst hat.

Ciao

Otto123

@Thomas Ich danke Dir auch, damit hab ich  mir mal readingsProxy an einem praktischen Beispiel angeschaut und eventuell verstanden.  8)
Wenn Du 25 RP hast, hab ich noch was für Dich.
Ich habe die Doku noch mit deinem Code "abgeglichen", dabei ist folgendes entstanden:
attr rp_FB_GWLAN1 setFn {($CMD eq "on")?"guestWlan on":"guestWlan off"}
attr rp_FB_GWLAN1 valueFn {($VALUE eq "on")?"on":"off"}

Das ist, glaube ich, die kürzeste Schreibweise des if in Perl :) Zur Erklärung (so wie ich es verstehe)
{(logischer Ausdruck)?"return wenn wahr":"return wenn falsch"}

Gruß Otto
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

Damit's noch kürzer wird, hätt ich auch noch was.

attr rp_FB_GWLAN1 valueFn {($VALUE eq "on")?"on":"off"}

einfach weglassen.

So wie ich das bisher verstanden habe liefert valueFn nur den gesetzten Wert nochmal in der Fhem-Oberfläche zurück.



Beta-User

 ;D , Danke an TomLee!

Für den Fall, dass es mal nicht nur ein reading ist, das wie hier als einzelnes Element gebraucht wird: readingsGroup...

Habe zwar grad keinen Fritzbox-Code, aber ein anderes nettes Beispiel, wie man damit Kommandos beliebig zusammenwürfeln kann (das geht nicht nur mit einzelnen readings desselben Devices, sondern auch mit mehreren Devices):
https://forum.fhem.de/index.php/topic,75020.msg668780.html#msg668780
Wäre entsprechend anzupassen, wenn jemand z.B. drei Schalter braucht, um nicht nur das Gäste-Wlan auszuschalten, sondern z.B. auch das "normale" Wlan oder DECT ;) .

Gruß, Beta-User
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

Otto123

Zitateinfach weglassen.
Ja stimmt, damit könnte man den state anders setzen. Er wird aber per Standard sowieso mit dem Kommando gesetzt, das wäre dann in dem Fall redundant.
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

Les ja viel quer hier, daher nochmal für die Nachwelt der kürzeste Code (denn der kommt ohne Dummy aus) zur Problemstellung zusammengefasst:

defmod rp_FB_GWLAN1 readingsProxy Fritzbox1:box_guestWlan
attr rp_FB_GWLAN1 devStateIcon on:it_wifi@green:off off:it_wifi@red:on
attr rp_FB_GWLAN1 event-on-change-reading .*
attr rp_FB_GWLAN1 room Fritzbox
attr rp_FB_GWLAN1 setFn {($CMD eq "on")?"guestWlan on":"guestWlan off"}
attr rp_FB_GWLAN1 setList on off