Hallo,
ich möchte mich kurz vorstellen: Mein Name ist Willi, bin 52 Jahre und befasse mich das erste Mal mit Fhem. Ich programmiere in C, Perl und Linux sind mit fremd.
Ich habe eine Rollosteuerung gebaut, die ich über eine RS232 Schnittstelle steuern kann. Dies geschieht jeweils mit 2 ASCII Zeichen [Rollonummer][Auf/Zu/Stopp], so das ich z.B. mit 1A Rollo 1 auffahren, 2Z Rollo 2 schließen und mit 3S Rollo 3 stoppen kann. Das habe ich mit einem USB-RS232 Adapter an meine Fritzbox 7390 angeschlossen, die als FHEM Server dient.
Die Steuerung setzt die Befehle um und gibt sie über einen 433MHz Sender an die Rolladenantriebe weiter.
In die fhem.cfg habe ich folgendes eingetragen:
attr global latitude 4x.xxxx
attr global longitude 1x.xxxxx
define RS232 ECMD serial /dev/ttyUSB0@4800
attr RS232 classdefs Rohrmotor=/var/rohrmotor/rohrmotor.classdef
define Rollo ECMDDevice Rohrmotor
attr Rollo room Wohnzimmer
In der rohrmotor.classdef steht:
set 1A cmd { "1A" }
set 1Z cmd { "1Z" }
set 1S cmd { "1S" }
set 2A cmd { "2A" }
set 2Z cmd { "2Z" }
set 2S cmd { "2S" }
set 3A cmd { "3A" }
set 3Z cmd { "3Z" }
set 3S cmd { "3S" }
.
.
.
Ich kann auf der Weboberfläche im Kommandofeld oder auch mit "putty" die Rollos mit z.B. "set Rollo 2A" bedienen. Auch das automatische Auffahren per Eintrag in fhem.cfg:
"define R1A at *{sunrise("CIVIL")} set Rollo 1A"
oder zu mit:
"define R2Z at *{sunset("CIVIL")} set Rollo 2Z"
funktioniert einwandfrei.
Soweit so gut, nur:
ich habe es nicht geschafft, in der Weboberfläche Buttons einzufügen, mit denen ich die Rollos steuern kann. Im Menue steht zwar zwischen "Unsorted" und "Everything" mein Raum "Wohnzimmer" und es erscheint:
ECMDDevice
Rollo [letzter Befehl]
aber kein Knopf zum bedienen. Wie kann ich solche Buttons hinzufügen die beim betätigen die Kommandos: z.B. "set Rollo 2Z" usw. ausgeben. Das sollte doch machbar sein, ich bin aber noch nicht dahinter gekommen wie das geht.
Oder bin ich total auf dem falschen Weg und das Ganze geht noch viel einfacher.
Für eine Hilfe wäre ich sehr dankbar.
Viele Grüße Willi
Hallo,
schau dir mal webCmd und eventMap an.
Grüße
Hallo!
Schon weitergekommen???
Wenn nicht, probiere es als Idee einfach so:
define Rollo_1 dummy
attr Rollo_1 eventMap 1A:Auf 1Z:Zu 1S:Stop
attr Rollo_1 webCmd Auf:Stop:Zu
attr Rollo_1 devStateIcon Auf:fts_shutter_10:Stop Stop:fts_shutter_50:Zu Zu:fts_shutter_100:Auf
attr Rollo_1 room Rolllaeden
define Rollo_2 dummy
attr Rollo_2 eventMap 2A:Auf 2Z:Zu 2S:Stop
attr Rollo_2 webCmd Auf:Stop:Zu
attr Rollo_2 devStateIcon Auf:fts_shutter_10:Stop Stop:fts_shutter_50:Zu Zu:fts_shutter_100:Auf
attr Rollo_2 room Rolllaeden
define Rollo_3 dummy
attr Rollo_3 eventMap 3A:Auf 3Z:Zu 3S:Stop
attr Rollo_3 webCmd Auf:Stop:Zu
attr Rollo_3 devStateIcon Auf:fts_shutter_10:Stop Stop:fts_shutter_50:Zu Zu:fts_shutter_100:Auf
attr Rollo_3 room Rolllaeden
define Rollo_all structure Etage Rollo_1 Rollo_2 Rollo_3
attr Rollo_all webCmd Auf:Stop:Zu
attr Rollo_all devStateIcon Auf:fts_shutter_10:Stop Stop:fts_shutter_50:Zu Zu:fts_shutter_100:Auf
attr Rollo_all room Rolllaeden
define Rolloreaktion notify Rollo.* {\
my $R1= Value("Rollo_1");;\
my $R2= Value("Rollo_2");;\
my $R3= Value("Rollo_3");;\
my $Rs= Value("Rollo_all");;\
if ($R1 eq "Auf") {fhem("set Rollo '1A'")};;\
if ($R1 eq "Zu") {fhem("set Rollo '1Z'")};;\
if ($R1 eq "Stop") {fhem("set Rollo '1S'")};;\
if ($R2 eq "Auf") {fhem("set Rollo '2A'")};;\
if ($R2 eq "Zu") {fhem("set Rollo '2Z'")};;\
if ($R2 eq "Stop") {fhem("set Rollo '2S'")};;\
if ($R3 eq "Auf") {fhem("set Rollo '3A'")};;\
if ($R3 eq "Zu") {fhem("set Rollo '3Z'")};;\
if ($R3 eq "Stop") {fhem("set Rollo '3S'")};;\
if ($Rs eq "Auf") {fhem("set Rollo '1A';;set Rollo '2A';;set Rollo '3A'")};;\
if ($Rs eq "Zu") {fhem("set Rollo '1Z';;set Rollo '2Z';;set Rollo '3Z'")};;\
if ($Rs eq "Stop") {fhem("set Rollo '1S';;set Rollo '2S';;set Rollo '3S'")};;\
}
So kann man schön die Rollläden einzeln schalten und über die structure alle zusammen...
MfG, MisterEltako
Vielen Dank für die schnelle Hilfe.
So gehts, ich muss nur bei '1A' usw. die Apostrophen weglassen, also z.B.:
if ($R1 eq "Auf") {fhem("set Rollo 1A")};;\
Und... Verstehen warum das so geht und was da geschieht.
Gruß
Willi