Gelöst: Schalten/Statusanzeige FB-GästeWLAN

Begonnen von coh3r3nt, 09 März 2016, 11:18:43

Vorheriges Thema - Nächstes Thema

coh3r3nt

Hallo zusammen,

Fhem läuft auf meinem RasPi und die FritzBox (7362SL) wird per FRITZBOX-modul angesprochen.
Ich möchte einerseits den Status des GästeWLANs anzeigen und andererseits mit einem Schalter die Möglichkeit
haben das GästeWLAN ein-/auszuschalten.

Das Schalten funktioniert schonmal:

define FB FRITZBOX
attr FB group FritzBox
attr FB icon it_router
attr FB room A
attr FB telnetUser pi
# Schalter für GaesteWLAN
define tGWLAN dummy
attr tGWLAN devStateIcon on:WLAN_Status.1 off:WLAN_Status.0
attr tGWLAN group FritzBox
attr tGWLAN icon it_wifi
attr tGWLAN room A
attr tGWLAN setList on off
# notify zum Schalten bei Betätigung dummy
define n_tGWLAN notify tGWLAN set FB guestWLAN $EVENT


Probleme habe ich mit der Statusanzeige:

define di_tGWLAN DOIF ([tGWLAN:state eq] "on" and [FB:box_guestWlan] eq "off") (set tGWLAN off)


Wenn nämlich nach der inder FB vordefinierten Zeit das GästeWLAN automatisch ausgeschalten wird, wird in FB das Reading
box_guestWlan auf off gesetzt. Da dies kein Event ist, merkt mein DOIF das leider nicht.
Die Anzeige des Dummy tGWLAN bleibt also auf on stehen.

Kann man ein Reading irgendwie zu einem Event machen ?

Coh3r3nT

Fhem auf RPi 2 unter Raspbian
Busware SCC, JeeLink, HomeMatic und Intertechno-Sensoren, FB7362SL

Otto123

Aber da steht doch die Klammer falsch:
Zitatdefine di_tGWLAN DOIF ([tGWLAN:state eq] "on" and [FB:box_guestWlan] eq "off") (set tGWLAN off)
define di_tGWLAN DOIF ([tGWLAN:state] eq "on" and [FB:box_guestWlan] eq "off") (set tGWLAN off)
Bist Du sicher mit dem Event? Die FB wird doch zyklisch getriggert und das erzeugt einen Event ...
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

limats

Hallo,

hab das Thema bei mir ohne DOIF gelöst:


define gWLAN readingsProxy FritzBox:box_guestWlan
attr gWLAN alias Gast-WLAN
attr gWLAN devStateIcon on:WLAN_Status.1:off off:WLAN_Status.0:onattr gWLAN group WLAN
attr gWLAN room Telefon
attr gWLAN setFn {($CMD eq "off")?"guestWlan off":"guestWlan on";;}
attr gWLAN setList on off
attr gWLAN webCmd on:off
Fhem auf BBB:
HM-CFG-USB für div. HM-Sensoren, CUL+WMBUS für EnergyCam, Nanocul für IT, Arduino Mega 2560 als 1-wire-Gateway und für div. digitale Ein-/Ausgänge, Volkszähler-USB-IR-Lesekopf mit SMLUSB, Solarsteuerung über VBUS

coh3r3nt

Hallo zusammen,

@limats:
Danke für deine Lösung, das ist sehr elegant und funktioniert.

@Otto123:
Danke für deinen Hinweis. Das war ein Fehler, aber wenn ich den behebe, dann funtkionert das
schalten gar nicht mehr. Komisch - ich würde gerne verstehen, wie die richtige Lösung mit dem DOIF-Ansatz aussieht, nur
um etwas besser fhem zu verstehen.

Fazit: Limats Lösung wird bei mir umgesetzt.

Coh3r3nT
Fhem auf RPi 2 unter Raspbian
Busware SCC, JeeLink, HomeMatic und Intertechno-Sensoren, FB7362SL

Octopus180

@limats:

Ich habe versucht deine Lösung umzusetzen. Ich habe in FHEM alles so eingegeben wie du es oben geschrieben hast. Wenn ich jetzt auf Telefon gehe und umschalten will bekomme ich die Aussage "Please define first ". Da ich mich erst seit neusten mit FHEM beschäftige, bekomme ich nicht raus was falsch ist.

Danke schon mal im Voraus für deine Mühe

FranzB94


Octopus180

Das FritzBox Modul habe ich aktiviert. Und wenn ich auf das Modul gehe kann ich auch über den Set Schalter das G-Wlan ein und ausschalten.


Octopus180


limats

Funktioniert denn die Anzeige des Status wie gewünscht?
Wenn du es über die Oberfläche eingibst, würde ich in der setFn mal statt dem Doppel-Strichpunkt einen einfachen probieren.
Fhem auf BBB:
HM-CFG-USB für div. HM-Sensoren, CUL+WMBUS für EnergyCam, Nanocul für IT, Arduino Mega 2560 als 1-wire-Gateway und für div. digitale Ein-/Ausgänge, Volkszähler-USB-IR-Lesekopf mit SMLUSB, Solarsteuerung über VBUS

Octopus180

(http://uploads.tapatalk-cdn.com/20160320/e5dd34cbd24c7c129ca1e29582293cc8.jpg)(http://uploads.tapatalk-cdn.com/20160320/51d385986de49b4a0b1717e62c4cdaae.jpg)(http://uploads.tapatalk-cdn.com/20160320/feec6a67901f98f5ffe3e3713afedb1c.jpg)

Bei mir sieht es so auch. Ich finde einfach den Fehler nicht.

limats

Bei mir ist das Attribut setFn gesetzt, bei dir getFn. Vielleicht liegt's daran.  :)
Fhem auf BBB:
HM-CFG-USB für div. HM-Sensoren, CUL+WMBUS für EnergyCam, Nanocul für IT, Arduino Mega 2560 als 1-wire-Gateway und für div. digitale Ein-/Ausgänge, Volkszähler-USB-IR-Lesekopf mit SMLUSB, Solarsteuerung über VBUS

Octopus180

Hatte ich falsch gelesen , aber auch das ändern auf setFn hat leider nichts gebracht, der Fehler bleibt?

limats

Und du bist dir sicher, dass dein FRITZBOX-Device auch FritzBox heißt?
Der STATE des ReadingsProxy sollte nämlich nicht auf Initialized stehen, sondern auf on bzw. off.
Fhem auf BBB:
HM-CFG-USB für div. HM-Sensoren, CUL+WMBUS für EnergyCam, Nanocul für IT, Arduino Mega 2560 als 1-wire-Gateway und für div. digitale Ein-/Ausgänge, Volkszähler-USB-IR-Lesekopf mit SMLUSB, Solarsteuerung über VBUS

Octopus180

Danke , ich habe den Fehler gefunden, mein Device heißt Fritzbox und nicht FritzBox, nochmal vielen Dank für deine Hilfe. Jetzt funktioniert alles einwandfrei.

Devender

Zitat von: limats am 09 März 2016, 19:20:41
Hallo,

hab das Thema bei mir ohne DOIF gelöst:


define gWLAN readingsProxy FritzBox:box_guestWlan
attr gWLAN alias Gast-WLAN
attr gWLAN devStateIcon on:WLAN_Status.1:off off:WLAN_Status.0:onattr gWLAN group WLAN
attr gWLAN room Telefon
attr gWLAN setFn {($CMD eq "off")?"guestWlan off":"guestWlan on";;}
attr gWLAN setList on off
attr gWLAN webCmd on:off


Danke auch von mir für den eleganten Code :-)
Hättest du auch eine Variante für das Aktivieren vom eigentlichen WLAN?

Ich hatte mir das schon zurecht gebaut und auch alles angepasst, aber beim aktivieren bekomme ich immer den Fehler:
Unknown argument off or wrong parameter(s), choose one of call checkAPIs diversity g


define WLAN readingsProxy Fritzbox:box_wlan_2.4GHz
attr WLAN alias Gast-WLAN
attr WLAN devStateIcon on:WLAN_Status.1:off off:WLAN_Status.0:onattr gWLAN group WLAN
attr WLAN room Telefon
attr WLAN setFn {($CMD eq "off")?"wlan_2.4GHz off":"wlan_2.4GHz on";;}
attr WLAN setList on off
attr WLAN webCmd on:off


Über das Modul der Fritzbox kann ich das WLAN schalten. Irgendwie passt die Übergabe im DEF nicht.
Ich habe über die Readings aber nur zu Auswahl:
box_wlan_2.4GHz
box_wlan_5.0GHz
box_guestWlan

Grüße,
Dirk
FHEM 5.8 auf RasPi mit Jessy - CUL868, JeeLink Lacrosse
Komponenten: HM, IT, ELV, FB7390, FritzPL543,Sonos Play3
Mehrere Wandtablets sowie einen Smart Mirror
https://wiki.fhem.de/wiki/Anwesenheitserkennung#PRESENCE-Modul

sTaN

#15
Danke limats für den Code-Schnipsel für den Gast WLAN Status. Funktioniert bei mir. Stehe gerade nur noch auf dem Schlauch, entsprechend meine Taste auf der Fernbedienung zu integrieren.
Aktuell sieht es bei mir so aus:

define GuestWLAN FS20 33143314 3341
attr GuestWLAN IODev CUL1
attr GuestWLAN fm_type on-off
attr GuestWLAN fm_view 0,0
attr GuestWLAN group WLAN
attr GuestWLAN icon WLAN_Status.1
attr GuestWLAN room Wohnzimmer
define FileLog_GuestWLAN FileLog ./log/GuestWLAN-%Y.log GuestWLAN
attr FileLog_GuestWLAN logtype text
attr FileLog_GuestWLAN room FS20

# Prüfe Status Gäste WLAN
define Status_Guest_WLAN readingsProxy FritzBox:box_guestWlan
attr Status_Guest_WLAN alias Gast-WLAN
attr Status_Guest_WLAN devStateIcon on:WLAN_Status.1:off off:WLAN_Status.0:on
attr Status_Guest_WLAN group WLAN
attr Status_Guest_WLAN room Wohnzimmer
attr Status_Guest_WLAN setFn {($CMD eq "off")?"guestWlan off":"guestWlan on";;}
attr Status_Guest_WLAN setList on off
attr Status_Guest_WLAN webCmd on:off

# GuestWLAN an mit FB (Kanal 5)
define guest_wlanON notify GuestWLAN:on.* set FritzBox guestWLAN on

# GuestWLAN aus mit FB (Kanal 5)
define guest_wlanOFF notify GuestWLAN:off.* set FritzBox guestWLAN off


Dabei befindet sich im Raum natürlich noch ein zweiter Schalter GuestWLAN, welchen ich ablösen möchte. Wie müsste das notify für die FB aussehen?
Reicht ein define guest_wlanON notify GuestWLAN:on.* setFn {($CMD eq "off")?"guestWlan off":"guestWlan on";;}

Irgendwie denke ich gerade zu kompliziert...

EDIT: Eine Frage noch. Wofür sind die folgenden Befehle nötig:
attr Status_Guest_WLAN setList on off
attr Status_Guest_WLAN webCmd on:off

Und warum ist es setFN und nicht nur set?


Gruß
sTaN
Raspberry Pi 3
2 x CUL CC1101-USB-Lite 868MHz
FS20 Komponenten, Philips HUE, Alexa-Fhem, MAX! Geräte, homebridge, harmony, Unifi, FirtzBox, MQTT, Aurora, Denon, Sonos, TabletUI, CALENDAR, EGPM2LAN, Pushover

stefan-dd

So funktioniert es:

define WLAN readingsProxy Fritzbox:box_wlan_2.4GHz
attr WLAN devStateIcon on:WLAN_Status.1:off off:WLAN_Status.0:onattr WLAN group WLAN
attr WLAN setFn {($CMD eq "off")?"wlan off":"wlan on";;}
attr WLAN group FritzBox
attr WLAN room zu Hause
attr WLAN setList on off
attr WLAN webCmd on:off