FHEM Forum

FHEM => Automatisierung => Thema gestartet von: DanHard am 23 Dezember 2014, 22:22:07

Titel: [gelöst] Schalten mit Dummy und Notify
Beitrag von: DanHard am 23 Dezember 2014, 22:22:07
Guten Abend zusammen

Ich will mit FHEM mein Fritzbox WLAN über ein Dummy schalten.
Das mache ich mit dem Modul FRITZBOX.
Das hat bis jetzt geklappt:

1. Einbinden vom Modul FRITZBOX und schalten des WLAN über den direkten Befehl "set fritzbox wlan on/off"

define fritzbox FRITZBOX
attr fritzbox INTERVAL 600
attr fritzbox fritzBoxIP 192.168.178.1
attr fritzbox group Server
attr fritzbox room Buero
attr fritzbox verbose 5


2. Erstellen eines Dummy's mit on und off Schalter

define WLAN dummy
attr WLAN devStateIcon on:it_wifi@green off:it_wifi@red
attr WLAN setList on off


3. Da ich das WLAN auch manuell an der Box schalten kann und das
WLAN auch eine Nachtschaltung hat habe ich ein NOTIFY erstellt, das mir
den Status meines Dummy's ändert.

define WLANanaus notify fritzbox:box_wlan_2.4GHz.* set WLAN $EVTPART1


Bis dahin habe ich alles mit Suchen im Forum und mit Hilfe der Commandref geschafft.
Leider stehe ich jetzt ein bisschen auf dem Schlauch. Und irgendwie finde ich auch im Forum keinen Anhaltspunkt.

Nun habe ich mir überlegt, machst du ein:

define WLANan notify fritzbox:WLAN:.* set fritzbox wlan on

und ein:

define WLANaus notify WLAN:off set fritzbox wlan off


Nun hat alles super ausgesehen, aber sobald ich nur einmal auf "on"
oder auf "off" klicke, bin ich in einer Endlosschlaufe.

Kann mir jemand von euch bitte helfen, oder mir eine Tipp geben was
ich falsch definiere? Wahrscheinlich mache ich einen grundsätzlichen Fehler.

Danke vielmals für eure Hilfe.
Gruss
DanHard
Titel: Antw:Schalten mit Dummy und Notify
Beitrag von: DanHard am 25 Dezember 2014, 08:46:33
Hat niemand von euch eine Idee?
Titel: Antw:Schalten mit Dummy und Notify
Beitrag von: Rince am 25 Dezember 2014, 09:36:45
Bis wer hilft, der davon mehr Ahnung hat als ich:
Prinzipiell kann die der EventMonitor (gaaaaaanz unten) hier sagen, was gerade passiert. Dann siehst du schön, was hier eine Endlosschleife auslöst und warum.

Die beiden Notifies sind imho unglücklich. Warum soll on bei :.* passieren, off aber bei :off.
Ich denke das paßt nicht zusammen. Aber ich kann mich irren.

Dann scheint es so, als würde dein notify dauernd greifen, weil es immer getriggert wird. Ein event-on- change-reading könnte Abhilfe schaffen.

Aber wie gesagt, vielleicht bin ich damit auch auf dem Holzweg.
Ich muss mir bei Gelegenheit mal das Modul ansehen :)

Ansonsten schau dir mal das DOIF an.
Titel: Antw:Schalten mit Dummy und Notify
Beitrag von: fiedel am 25 Dezember 2014, 10:07:20
Hi,

ich hab schon einige Stunden in das Thema investiert, bin aber noch nicht viel weiter gekommen: So wie es DanHard vor hat, führt es immer in eine Schleife. Auch wenn man in einer Perlfunktion auf on/off abfragt und logisch toggelt.

Mein Ansatz war "readingsProxy", der das Reading direkt als state übernimmt und somit nicht mehr durch ein externes Notify aktualisiert werden muss. Das klappt auch schon, aber geschaltet bekomme ich es nicht. Also Mein aktueller Stand: Hilfe bei Andre holen, oder mit Dummy + readingsProxy weiterexperimentieren. Ganz schön harte Nuss, oder ich sehe die einfache Lösung nicht...  ;D

Gruß

Frank
Titel: Schalten mit Dummy und Notify
Beitrag von: justme1968 am 25 Dezember 2014, 10:56:40
ich würde auch einen readingsProxy verwenden.

warum schaltet er nicht?

poste doch mal deine komplette definition.

gruss
  andre
Titel: Antw:Schalten mit Dummy und Notify
Beitrag von: fiedel am 25 Dezember 2014, 11:51:24
Sooooo, läuft! Sogar ohne Andre fragen.  ;) Ich hatte mir total dumme Syntaxfehler selbst eingebaut. So sieht es jetzt aus und lässt sich auch per Klick direkt auf das Icon schalten (so wie ich das perfekterweise haben wollte):

define my_FB FRITZBOX
...

define WLAN readingsProxy my_FB:box_guestWlan
attr WLAN devStateIcon on:it_wifi@green:off off:it_wifi@red:on
attr WLAN setFn {($CMD eq "off")?"guestWlan off":"guestWlan on";;}
attr WLAN setList on off
attr WLAN valueFn {$LASTCMD}
attr WLAN webCmd on:off


Andre, falls daran noch etwas überflüssig ist, bitte korrigieren. Ich habe readingsProxy noch nicht ganz verstanden. Z.B. wo kommen die Variablen wie "$CMD" her? Wie arbeitet "{($CMD eq "on")?"off":"on";;}" genau (wie setzt es den Vergleich auf "on" dann auf "off":"on" um? Naja, mit jedem Experiment wird das Verständnis besser...  8)

Übrigens schalte ich hier das Gast WLAN, damit ich mich mit dem Notebook beim Testen nicht jedes Mal selbst abschieße. ;D

Gruß und schöne Weihnachten!

Frank
Titel: Antw:Schalten mit Dummy und Notify
Beitrag von: justme1968 am 25 Dezember 2014, 13:22:30
gib zu du hast den fehler gesehen als du vor dem posten noch mal genau hin geschaut hast :)

der code schaut gut aus. du kannst mal versuchen die valueFn weg zu lassen. in diesem fall sollte es trotzdem gehen.

wenn du in fhem ein set auf den readingsProxy machst wird aufgerufen was du als setFn konfiguriert hast und  $CMD ist das kommando das beim set angegeben wurde. das was die setFn dann zurück gibt wird dann für ein set an das eigentliche device verwendet.

gruss
  andre

ps: da du mit dem readingsProxy automatisch auch ein off-for-timer bekommst sobald es ein on und ein off gibt kannst du mit einem off-for-timer 15 auch auf das normale netz testen wenn du so weit bist.
Titel: Antw:Schalten mit Dummy und Notify
Beitrag von: DanHard am 25 Dezember 2014, 13:24:56
Zitat von: fiedel am 25 Dezember 2014, 11:51:24
Sooooo, läuft! Sogar ohne Andre fragen.  ;) Ich hatte mir total dumme Syntaxfehler selbst eingebaut. So sieht es jetzt aus und lässt sich auch per Klick direkt auf das Icon schalten (so wie ich das perfekterweise haben wollte):

define my_FB FRITZBOX
...

define WLAN readingsProxy my_FB:box_guestWlan
attr WLAN devStateIcon on:it_wifi@green:off off:it_wifi@red:on
attr WLAN setFn {($CMD eq "off")?"guestWlan off":"guestWlan on";;}
attr WLAN setList on off
attr WLAN valueFn {$LASTCMD}
attr WLAN webCmd on:off


Andre, falls daran noch etwas überflüssig ist, bitte korrigieren. Ich habe readingsProxy noch nicht ganz verstanden. Z.B. wo kommen die Variablen wie "$CMD" her? Wie arbeitet "{($CMD eq "on")?"off":"on";;}" genau (wie setzt es den Vergleich auf "on" dann auf "off":"on" um? Naja, mit jedem Experiment wird das Verständnis besser...  8)

Übrigens schalte ich hier das Gast WLAN, damit ich mich mit dem Notebook beim Testen nicht jedes Mal selbst abschieße. ;D

Gruß und schöne Weihnachten!

Frank

Danke für deine Hilfe.
Habe es nun zum testen mal auch mit dem GastWLAN getestet, funktioniert so wunderbar. Danke nochmals!
Wenn ich das aber auf das normale WLAN anwende funktioniert es zwar, aber wenn ich das richtig sehe wird der STATE aber
nicht aktualisiert wenn das WLAN in die Nachschalt geht oder wenn ich manuell auf der Weboberfläche deaktiviere.
Oder hab ich da was falsch verstanden?
Titel: Antw:Schalten mit Dummy und Notify
Beitrag von: DanHard am 25 Dezember 2014, 13:26:55
Zitat von: justme1968 am 25 Dezember 2014, 10:56:40
ich würde auch einen readingsProxy verwenden.

warum schaltet er nicht?

poste doch mal deine komplette definition.

gruss
  andre

Ist genau so konfiguriert wie im ersten Post.
Oder welche angaben musst du noch haben?
Titel: Antw:Schalten mit Dummy und Notify
Beitrag von: justme1968 am 25 Dezember 2014, 13:29:42
die frage war an fidel :)

wenn du das normale wlan schaltest musst du auch im define das reading ändern. nicht nur in der setFn.

gruß
  andre
Titel: Antw:Schalten mit Dummy und Notify
Beitrag von: justme1968 am 25 Dezember 2014, 13:33:05
noch etwas: in der setFn kannst du $READING verwenden. dann muss es nicht an zwei stellen synchron gehalten werden. 
Titel: Antw:Schalten mit Dummy und Notify
Beitrag von: DanHard am 25 Dezember 2014, 13:37:42
Zitat von: justme1968 am 25 Dezember 2014, 13:29:42
die frage war an fidel :)

wenn du das normale wlan schaltest musst du auch im define das reading ändern. nicht nur in der setFn.

gruß
  andre

Ich habe das Gastwlan so konfigiriert wie von dir beschrieben.
define WLANGast readingsProxy fritzbox:box_guestWlan
attr WLANGast devStateIcon on:it_wifi@green:off off:it_wifi@red:on
attr WLANGast setFn {($CMD eq "off")?"guestWlan off":"guestWlan on";;}
attr WLANGast setList on off
attr WLANGast valueFn {$LASTCMD}
attr WLANGast webCmd on:off


Wenn ich nun mein GastWLAN über die Weboberfläche deaktiviere und
mit set fritzbox update die Readings aktuallisiere wird der Status der STATE
des GastWLan's nicht aktuallisiert.
Internals:
   CFGFN
   DEF        fritzbox:box_guestWlan
   DEVICE     fritzbox
   NAME       WLANGast
   NR         794
   NTFY_ORDER 50-WLANGast
   READING    box_guestWlan
   STATE      off
   TYPE       readingsProxy
   CHANGETIME:
   Content:
     fritzbox   1
   Helper:
     Dblog:
       State:
         Mydblog:
           TIME       1419510801.06322
           VALUE      off
   Readings:
     2014-12-25 13:22:12   lastCmd         off
     2014-12-25 13:33:21   state           off
Attributes:
   devStateIcon on:it_wifi@green:off off:it_wifi@red:on
   setFn      {($CMD eq "off")?"guestWlan off":"guestWlan on";}
   setList    on off
   valueFn    {$LASTCMD}
   webCmd     on:off


der State ist aber on laut Readings von fritzbox.

Titel: Antw:Schalten mit Dummy und Notify
Beitrag von: justme1968 am 25 Dezember 2014, 13:39:41
lösch mal bitte die valueFn

gruß
andre
Titel: Antw:Schalten mit Dummy und Notify
Beitrag von: DanHard am 25 Dezember 2014, 13:54:56
Zitat von: justme1968 am 25 Dezember 2014, 13:39:41
lösch mal bitte die valueFn

gruß
andre

Danke das war die Lösung.
Nun habe ich das ganze umgebaut für das normale WLAN:
Internals:
   CFGFN
   DEF        fritzbox:box_wlan_2.4GHz
   DEVICE     fritzbox
   NAME       WLAN
   NR         3079
   NTFY_ORDER 50-WLAN
   READING    box_wlan_2.4GHz
   STATE      on
   TYPE       readingsProxy
   CHANGETIME:
   Content:
     fritzbox   1
   Helper:
     Dblog:
       State:
         Mydblog:
           TIME       1419512001.55953
           VALUE      on
   Readings:
     2014-12-25 13:53:07   lastCmd         off
     2014-12-25 13:53:21   state           on
Attributes:
   devStateIcon on:it_wifi@green:off off:it_wifi@red:on
   setFn      {($CMD eq "off")?"wlan_2.4GHz off":"wlan_2.4GHz on";}
   setList    on off
   webCmd     on:off


Wieso kommt da ein Fehler wenn ich auf on oder off klicke?
Unknown argument wlan_2.4GHz or wrong parameter(s), choose one of alarm convertMOH convertRingTone createPwdFile customerRingTone diversity guestWlan:on,off moh ring sendMail startRadio tam update:noArg wlan:on,off
Titel: Antw:Schalten mit Dummy und Notify
Beitrag von: fiedel am 25 Dezember 2014, 14:10:16
Da stimmt das regex im setFn nicht. Probier mal "wlan:off" und "wlan:on"!

Edit:
Zitat von: justme1968 am 25 Dezember 2014, 13:22:30
gib zu du hast den fehler gesehen als du vor dem posten noch mal genau hin geschaut hast :)

Das hast du gesehen?  ;D Ich hatte versehentlich eine der alten Versionen gepostet und dann schnell durch die funktionierende ersetzt.  ;) Vielen Dank noch mal fürs unter die Arme greifen!
Titel: Antw:Schalten mit Dummy und Notify
Beitrag von: DanHard am 25 Dezember 2014, 14:33:31
Zitat von: fiedel am 25 Dezember 2014, 14:10:16
Da stimmt das regex im setFn nicht. Probier mal "wlan:off" und "wlan:on"!

Edit:
Das hast du gesehen?  ;D Ich hatte versehentlich eine der alten Versionen gepostet und dann schnell durch die funktionierende ersetzt.  ;) Vielen Dank noch mal fürs unter die Arme greifen!

Super Danke. Ich lerne täglich was hinzu!
Titel: Antw:[gelöst] Schalten mit Dummy und Notify
Beitrag von: svenomatt am 04 Januar 2015, 01:16:22
Hallo zusammen,

ich möchte mit FHEM mein Internetradio von der Fritzbox über ein Dummy schalten.
Das mache ich mit dem Modul FRITZBOX.

ich bin soweit gekommen das ich die Radiosender schalten kann. Jetzt würde ich an der Stelle der Zahlen gerne die Radiosender aus den Readings auslesen und anstatt der Zahlen haben. Ist das möglich.

## Fritz-InternetRadio schalten
define FritzRadio dummy
attr FritzRadio group FritzboxRadio
attr FritzRadio room Büro
attr FritzRadio webCmd 0:1:2:3


define FRadio notify FritzRadio set 7390 startRadio 610 $EVENT
attr FRadio group FritzboxRadio
attr FRadio room Büro


(//)

Über eure Hilfe wäre ich sehr dankbar.


Titel: Antw:[gelöst] Schalten mit Dummy und Notify
Beitrag von: fiedel am 04 Januar 2015, 10:15:06
Hi svenomatt,

das mit dem Auslesen geht sicher (ich wüsste jetzt nicht wie), aber wozu soll das gut sein? Du willst doch nur ein paar feste Lieblingssender per Button einschalten!? Hast du mal versucht statt "0:1:2:3" "Off:Sender_1:Sender_2:Sender_3" zu schreiben?

Ich würde mir die Senderlogos als PNG besorgen, für jeden Sender einen extra Dummy anlegen und per devstateicon das Logo anzeigen. Das Logo kannst du noch bearbeiten, dass es z.B. mit einem grünen Kreis hinterlegt ist. Diese Version wird dann auch per devstateicon angezeigt, wenn der entspr. Dummy gerade aktiv ist. Dahinter legst du eine kleine "Radiobutton"- Logik: Wird eine Taste (Button) gedrückt, werden die anderen auf "off" gesetzt und gleichzeitig der Befehl an die FB abgesetzt. Einen "Off"- Button baust du genau so dazu. Ich wüsste allerdings nicht (falls die Frage kommt), ob man in deinem vorh. Dummy statt ""0:1:2:3" auch Logos anzeigen kann.
Das Ganze kann dann noch per ReadingsGroup zu einem "Radio" zusammengefasst werden, oder die einzelnen Dummys in einem Floorplan angeordnet werden.

Gruß

Frank
Titel: Antw:[gelöst] Schalten mit Dummy und Notify
Beitrag von: justme1968 am 04 Januar 2015, 11:06:14
in einem dummy kann man nur ein einziges icon anzeigen (für STATE) und in den webCmd nur text.

wenn du eine readingGroup verwendest brauchst du keine dummys. hier kannst du beliebig viele icon anzeigen und mit einem kommando hinterlegen. ein beispiel findest du in diesem thread: http://forum.fhem.de/index.php/topic,14237.msg227958.html#msg227958 (http://forum.fhem.de/index.php/topic,14237.msg227958.html#msg227958)

gruss
  andre
Titel: Antw:[gelöst] Schalten mit Dummy und Notify
Beitrag von: svenomatt am 04 Januar 2015, 20:14:18
Zitatwenn du eine readingGroup verwendest brauchst du keine dummys. hier kannst du beliebig viele icon anzeigen und mit einem kommando hinterlegen. ein beispiel findest du in diesem thread: http://forum.fhem.de/index.php/topic,14237.msg227958.html#msg227958 (http://forum.fhem.de/index.php/topic,14237.msg227958.html#msg227958)

Danke Andre das war die Lösung.

Vielen Dank :D
Titel: Antw:[gelöst] Schalten mit Dummy und Notify
Beitrag von: svenomatt am 06 Januar 2015, 13:05:15
Hallo zusammen,

ich bin jetzt dank der Hilfe schon richtig weit gekommen.

Leider komme ich an zwei Stellen nicht wirklich weiter.

1. Wie kann das Frizboxradio wieder abschalten? Ich habe echt gesucht aber nichts gefunden.

2. Ich möchte das beim Klick neben dem Set noch ein setreading ausgeführt wird. Aber irgendwie will das nicht so richtig.


attr TestRadio commands {'TestRadio.rc_0' => 'set 7390 startRadio 610 0'; 'setreading 7390 dect1_radio KissFM' , 'TestRadio.rc_1' => 'set 7390 startRadio 610 1'.........}

Hat jemand eine Ahnung was ich falsch mache. Ich möchte das beim Absenden des Befehl gleichzeitig das reading (setreading) geändert wird.

Guss Sven

:P Problem 2 konnte ich gerade selbst lösen ";;"






Titel: Antw:Schalten mit Dummy und Notify
Beitrag von: Simon2408 am 11 Februar 2015, 10:21:15
Zitat von: fiedel am 25 Dezember 2014, 11:51:24
Sooooo, läuft! Sogar ohne Andre fragen.  ;) Ich hatte mir total dumme Syntaxfehler selbst eingebaut. So sieht es jetzt aus und lässt sich auch per Klick direkt auf das Icon schalten (so wie ich das perfekterweise haben wollte):

define my_FB FRITZBOX
...

define WLAN readingsProxy my_FB:box_guestWlan
attr WLAN devStateIcon on:it_wifi@green:off off:it_wifi@red:on
attr WLAN setFn {($CMD eq "off")?"guestWlan off":"guestWlan on";;}
attr WLAN setList on off
attr WLAN valueFn {$LASTCMD}
attr WLAN webCmd on:off


Andre, falls daran noch etwas überflüssig ist, bitte korrigieren. Ich habe readingsProxy noch nicht ganz verstanden. Z.B. wo kommen die Variablen wie "$CMD" her? Wie arbeitet "{($CMD eq "on")?"off":"on";;}" genau (wie setzt es den Vergleich auf "on" dann auf "off":"on" um? Naja, mit jedem Experiment wird das Verständnis besser...  8)

Übrigens schalte ich hier das Gast WLAN, damit ich mich mit dem Notebook beim Testen nicht jedes Mal selbst abschieße. ;D

Gruß und schöne Weihnachten!

Frank


Hallo
Danke für deine Arbeit.
Leider läst sich das Gastwlan bei mir nicht an und ausschalten.
FB 7490

Gruß
Titel: Antw:[gelöst] Schalten mit Dummy und Notify
Beitrag von: Simon2408 am 13 Februar 2015, 08:12:02
O.k funktioniert super
Titel: Antw:[gelöst] Schalten mit Dummy und Notify
Beitrag von: fiedel am 14 Februar 2015, 13:24:13
Goldene Regel hier im Forum:

-bei Fragen immer soviel wie mögl. Infos hinzufügen, damit man helfen kann!
-bei "Gelöst"- Meldungen immer die Lösung oder Ursache posten, damit andere daraus lernen können!