Hallo,
ich habe es jetzt geschafft meine Intertechno Steckdosen in Fhem einzubinden, nun möchte ich diese auch gerne über meinen vorhandenen FS20 Schalter ansprechen, wie lässt sich das realisieren?
Muß ich mit einem Watchdog arbeiten? oder gibt es irgendwelche anderen Lösungen?
Es gibt Szenarien, wo es sinnvoll erscheint. Deines gehört nicht dazu.
Schau doch mal in die Commandfref. Dort unter notify.
Das ist, was du suchst. Da ist sogar ein Beispiel drin, welches deinem Wunsch ziemlich gut entspricht :)
Hallo,
wenn ich
define Vitrine notify FS20_1be455 set Vitrine $EVENT
nehme kann ich über das webfontend mit dem FS20_1be455 die Vitrine Schalten, mit dem Hardwareschalter aber nicht, kann es daran liegen das ich mit dem FS20_1be455 toggle ?
Da du nicht schreibst, was das jeweils ist, kann ich nur raten.
Ich empfehle Ulis Einsteigerdoku, da wird FS20 schön erklärt. Ist oben ein gepinntes Posting.
Ansonsten würde ich Vorschlagen, mach dir mal den Eventmonitor auf in einem zweiten Browserfenster.
Anschließend schalte per Webfrontend
Schau was im Eventmonitor steht.
Schalte am Schalter
Wieder nachsehen, was im Eventmonitor steht.
Das wird unterschiedlich sein nehme ich an, und der Unterschied ist dann wohl der Grund. Wenn wir den kennen, können wir uns sinnvoll um eine Lösung bemühen :)
Ich möchte wie oben geschrieben eine Intertechno Steckdose mit einem FS20 Schalter ansprechen, da das beides unterschiedliche Systeme sind stehen im Eventmonitor selbstverständlich unterschiedliche Befehle.
Ich würde gerne den Hardwareschalter FS20 Schalter_Vitrine schalten und damit die Intertechno Steckdose Vitrine ein und ausschalten, da ich beide ja nicht direkt miteinander anlernen kann dachte ich, ich kann den Befehl über FHEM umleiten.
etwa wie define Schalter_Vitrine set Vitrine on
oder so ähnlich
es würde mir wahrscheinlich schon reichen wenn ich wüsste wie ich mit einem Hardware FS20 Schalter eine structure oder einen dummy schalten kann, leider finde ich trotz suchen keine Möglichkeit.
Ich habe es bei mir so
define FS20_54fc00_shutter_stop2 notify FS20_54fc00:off set WZ_Rollladen stop
gemacht. Aber wie Rince schon geschrieben hat, in Ulis Dokument ist das ganz gut beschrieben.
Gruß PeMue
Hallo,
du brauchst weder eine structure noch einen dummy dazu.
Du musst in das notify den Befehl einbauen der deine Steckdose schaltet.
Ich vermute mal das $EVENT dazu nicht passt da deine Steckdose mit toogle nichts anfangen kann.
Das ist aber alles nur eine Vermutung daher möchte ich dir gerne die angepinnten Beiträge ans Herz legen.
Grüße
@Black 8
Schreibe ich undeutlich oder zu kompliziert?
Was ist an einem Copy&Paste aus dem Eventmonitor unverständlich?
Dann sähe man schön, welche Befehle jeweils gesendet werden, und könnten das notify entsprechend richtig schreiben.
@Rince
Der Befehl für die Steckdose zum einschalten lautet:
2014-04-21 18:31:09 IT Vitrine on
bzw. zum ausschalten:
2014-04-21 18:33:37 IT Vitrine off
der Befehl vom Schalter lautet:
2014-04-21 18:35:01 FS20 Schalter_Vitrine toggle
ich hoffe, es ist das was Du brauchst.
Nun,
das ist kein Copy & Paste aus dem Eventmonitor, sieht eher nach Logfile aus ;)
Tu mir doch den Gefallen und schau den Eventmonitor an. Du findest ihn links im Menü ziemlich weit unten.
Aber es gibt Puschel völlig recht, dass Toggle von deiner Steckdose nicht verstanden wird.
Also müssen wir daran arbeiten ::)
Hier das copy paste aus dem Eventmonitor:
2014-04-21 18:45:00 FS20 Schalter_Vitrine toggle
2014-04-21 18:45:01 IT Vitrine on
das sind die relevanten Einträge
es müsste sich doch mit einem IF lösen lassen
etwa so:
define Vitrine_on IF (Schalter_Vitrine eq "on") (set Vitrine on)
Na ja, der Rest ist schon auch spannend.
Er zeigt z.B., wann dein Notify auslöst. Nötig ist es nicht, aber es ist halt schöner zum lesen. Am besten, wenn du noch die Marker für Code benutzt zum posten ;)
Schau mal diesen Thread an:
http://forum.fhem.de/index.php/topic,18916.msg126334.html#msg126334
Da steht quasi die Lösung für ein ähnliches Problem drin ;)
Vielleicht kannst du das einfach bei dir umsetzen?
Danke für die Antwort, jetzt hakt es noch bei mir mit der Umsetzung, ich bekomme es irgendwie nicht hin.
define Wandtaster_T2 notify CUL_HM_HM_PBI_4_FM_2436B1_Btn_02 set schalter1 on
sieht bei mir so aus:
define Vitrine_notify notify Schalter_Vitrine:toggle { fhem "set Vitrine on" }
wie setze ich jetzt das:
define toggle1 dummy
define Wandtaster_T2 notify CUL_HM_HM_PBI_4_FM_2436B1_Btn_02 set schalter1 on;;set toggle1 on
define Wandtaster_T3 notify CUL_HM_HM_PBI_4_FM_2436B1_Btn_03 {\
if (Value("toggle1") eq "on"){\
fhem "set schalter1 off" ;;\
fhem "set toggle1 off"}\
}
für mich um ?
Also:
Was da passiert:
Das Problem ist, das du mit dem toggle ja nicht weißt, ob ein oder ausgeschaltet wird. Also du schon, aber fhem nicht.
Was hier hilft, ist ein Dummy.
Dessen Wert kannst du nach Lust und Laune selber bestimmen.
Dieses Zusammenspiel schaltet nun den Dummy entsprechend dem Status von der Steckdose. Also on oder off.
Wenn jetzt ein toggle kommt, wird geprüft wie denn der Status von dem Dummy ist.
Je nachdem, kann man nun nämlich ein on oder ein off setzen. Zusätzlich muss man den Status vom Dummy aktualisieren :)
Mehr will ich dazu nicht schreiben. Liegt daran, das ich es nicht nachstellen kann. So gut, dir aus dem Stegreif einen fehlerfreien Code zu liefern, bin ich nicht.
Daher würde ich empfehlen, in der Commandref mal das Dummy Konzept nachzulesen.
Die if Geschichte steht ja schon fertig da :)
Hallo,
wozu der Umweg über einen Dummy?
Kann die Steckdose vor Ort geschalten werden und bekommt das FHEM mit?
Dann hat aber der Dummy auch nichts davon ???
Mal für die ersten Gehversuche:
define Vitrine_notify notify Schalter_Vitrine:toggle {
fhem("set Vitrine on") if(Value("Vitrine") ne "on");
fhem("set Vitrine off") if(Value("Vitrine") eq "on");
}
Achtung!
Nicht in die fhem.cfg kopieren - dafür sind meine Codeversuche nicht gedacht.
Immer brav das DEF bearbeiten ;)
Grüße
Und bitte keine Meckereien wegen Fehler - die haben meine Codes immer an Board ;D
Hallo Puschel,
danke erst mal für Deine Hilfe, es klappt jetzt mit
}};
{if(Value("Vitrine") eq "on") { fhem("set Vitrine off") }}
bis zum einschalten der Vitrine, aber wie erweitere ich das für das wieder ausschalten?
define Vitrine_notify notify Schalter_Vitrine:toggle {if(Value("Vitrine") eq "off") { fhem("set Vitrine on") }};;
{if(Value("Vitrine") eq "on") { fhem("set Vitrine off") }}
klappt leider nicht, habe ich Syntaxfehler ?
Hallo,
schau mal ins FHEM-Logfile.
FHEM sagt dir schon wenn was nicht passt ;)
Grüße
Edith: dann zeig bitte den ganzen Code und beschreib bitte genau was geht und was nicht.
Und fummel nicht in der fhem.cfg rum - das mach ich nämlich auch nicht ;)
Habe es jetzt mit
define Vitrine_notify notify Schalter_Vitrine:toggle {if(Value("Vitrine") eq "off") { fhem("set Vitrine on") }};;
{if(Value("Vitrine") eq "on") { fhem("set Vitrine off") }}
versucht, damit lässt sich die Vitrine nur einschalten wenn Status Vitrine off ist, aber nicht einschalten wenn Status Vitrine on ist
geschweifte Klammern sind falsch.
So sollte es besser gehen (ungetestet) 8)
define Vitrine_notify notify Schalter_Vitrine:toggle {
if(Value("Vitrine") eq "off") { fhem("set Vitrine on") };
if(Value("Vitrine") eq "on") { fhem("set Vitrine off") };
}
mit
define Vitrine_notify notify Schalter_Vitrine:toggle {
if(Value("Vitrine") eq "off") { fhem("set Vitrine on") };
if(Value("Vitrine") eq "on") { fhem("set Vitrine off") };
}
bekomme ich folgenden Fehler:
Unknown command if(Value("Vitrine"), try help. Unknown command if(Value("Vitrine"), try help. Unknown command }, try help
Hallo,
ich versteh nicht ganz was an dem Code
define Vitrine_notify notify Schalter_Vitrine:toggle {
fhem("set Vitrine on") if(Value("Vitrine") ne "on");
fhem("set Vitrine off") if(Value("Vitrine") eq "on");
}
falsch sein soll?
Ich werd den später mal in meiner Testumgebung auf meine Dummys loslassen.
Ob das if vorher oder nachher kommt ist für FHEM (Perl) egal.
Es kann allerdings sein das der Empfänger ein- und sofort wieder ausschaltet.
Das muss ich, wie gesagt, nachher mal kurz testen.
Evtl. muss das noch etwas anders gekapselt werden.
Es gibt aber auch die Funktion Untoogle - ob die hier helfen kann muss Black8 mal versuchen.
Grüße
Untoggle habe ich gemacht, bringt aber nichts da bei Schalterbetätigung trotzdem der toggle Befehl gesendet wird und das untoggle nur Auswirkung auf das Webfontend hat.
Bei der Fehlermeldung tippe ich auf einfügen des Codes in die cfg direkt und nicht (wie es gemacht werden sollte) über's DEV.....
Oder ?!
Über DEV bekomme ich bei:
define Vitrine_notify notify Schalter_Vitrine:toggle {
fhem("set Vitrine on") if(Value("Vitrine") ne "on");
fhem("set Vitrine off") if(Value("Vitrine") eq "on");
}
ein:Unknown module Schalter_Vitrine:toggle
Unknown command fhem, try help.
Unknown command }, try help.
Zitat von: Black 8 am 22 April 2014, 18:03:55
mit
define Vitrine_notify notify Schalter_Vitrine:toggle {
if(Value("Vitrine") eq "off") { fhem("set Vitrine on") };
if(Value("Vitrine") eq "on") { fhem("set Vitrine off") };
}
bekomme ich folgenden Fehler:
Unknown command if(Value("Vitrine"), try help. Unknown command if(Value("Vitrine"), try help. Unknown command }, try help
haste den Code mal im DEV versucht ?
Jetzt bin ich doch verunsichert, was ist DEV ?
Ist es nicht das Eingabefeld oben ?
Dort habe ich
define Vitrine_notify notify Schalter_Vitrine:toggle {
if(Value("Vitrine") eq "off") { fhem("set Vitrine on") };
if(Value("Vitrine") eq "on") { fhem("set Vitrine off") };
}
mit folgenden Fehler: Unknown command if(Value("Vitrine"), try help.
Unknown command }, try help.
Den Code kannst du so 1:1 nicht in das Befehlsfeld kopieren.
Versuch es so:
define Vitrine_notify notify Schalter_Vitrine:toggle {}
Dann Enter.
Nun hast du links vom Codeteil DEF stehen.
Drauf klicken und
if(Value("Vitrine") eq "off") { fhem("set Vitrine on") };
if(Value("Vitrine") eq "on") { fhem("set Vitrine off") };
zwischen de geschweiften Klammern einfügen.
Und dann darunter auf modify klicken.
naja fast...
bei der eingabe dort mit geschweiften Klammern vergisst er immer die letzte.
ich bin davon ausfegangen, das Du Dein "Vitrine_notify" bearbeitest.
Und zwar über den Internen FHEM Editor. Wenn Du das immer neu in die Zeile oben eingibst, dann sollte sowas kommen wie "Schon vorhaben, kann nicht angelegt werden"
Danke für Eure Geduld,
habe es jetzt in der DEV gemacht, als Ergebnis schaltet die Vitrine ein und sofort wieder aus.
Hallo,
Zitatschaltet die Vitrine ein und sofort wieder aus.
Meine Rede.
Ich bin dran - bischen Geduld bitte.
Grüße
OT.
Vermaledeiter UMTS Stick ! ! ! ! Mieser Empfang
OToff
Das Ding heisst DEF (mein Fehler)
Wenn Du auf den Link DEF klickst, kannst Du den Code bearbeiten.
Habe es jetzt verstanden, danke für die gute Erklärung
Hallo,
so klappt es mit meinen beiden Dummy einwandfrei.
Schalter_Vitrine:toggle {
if(Value("Vitrine") ne "on") {
fhem("set Vitrine on");
}
else {
fhem("set Vitrine off");
}
}
Einfach den Teil im DEF anpassen.
Hier hab ich noch einen Beitrag gefunden:
http://forum.fhem.de/index.php/topic,17496.msg115065.html#msg115065 (http://forum.fhem.de/index.php/topic,17496.msg115065.html#msg115065)
Der untere Teil beschreibt das "arbeiten" ohne die fhem.cfg anfassen zu müssen.
Also zumindest einen Teil davon ;D
Grüße
@Puschel,
vielen Dank es Klappt alles Super, Danke das Ihr so geduldig wart und euch die Zeit genommen habt
Hallo,
Gern geschehen.
Bitte noch den Beitrag als Gelöst markieren - Danke.
Grüße