Reichweitentest für die Funksteckdosen

Begonnen von alfonsmoeller, 23 April 2014, 21:55:06

Vorheriges Thema - Nächstes Thema

alfonsmoeller

Hallo an alle Interessierten,

hier habe ich einen Test für Funksteckdosen ausgearbeitet.
Wenn man die Reichweite der Funksteckdosen testen möchte
ist dies sicher hilfreich. (bitte nicht den Nachbarn ärgen, daher
die zeitliche Begrenzung)

In diesem Fall sind es die Funksteckdosen von ELRO. Mit den
baugleichen Pollin funktioniert es ebensogut.


#_______________________________________
define CSM1 CUL /dev/ttyAMA0@38400 1234
#_______________________________________

#Elro AB440/Intertechno Funksteckdosen Nr1
define ELRO_11100_A IT 000FF0FFFF FF F0
attr ELRO_11100_A IODev CSM1
attr ELRO_11100_A alias Nr1
attr ELRO_11100_A model itswitch
attr ELRO_11100_A room 4.30_Steckdosen

#Elro AB440/Intertechno Funksteckdosen Nr2
define ELRO_11100_B IT 000FFF0FFF FF F0
attr ELRO_11100_B IODev CSM1
attr ELRO_11100_B alias Nr2
attr ELRO_11100_B model itswitch
attr ELRO_11100_B room 4.30_Steckdosen

#Elro AB440/Intertechno Funksteckdosen Nr3
define ELRO_11100_C IT 000FFFF0FF FF F0
attr ELRO_11100_C IODev CSM1
attr ELRO_11100_C alias Nr3
attr ELRO_11100_C model itswitch
attr ELRO_11100_C room 4.30_Steckdosen

#Elro AB440/Intertechno Funksteckdosen Nr4
define ELRO_11100_D IT 000FFFFF0F FF F0
attr ELRO_11100_D IODev CSM1
attr ELRO_11100_D alias Nr4
attr ELRO_11100_D model itswitch
attr ELRO_11100_D room 4.30_Steckdosen

#_______________________________________
# Steckdosentest bitte immer zeitlich
# begrenzen sonst gibts Ärger mit den
# Nachbarn
# Steckdose alle 60 Sekunden ein und nach
# weiteren 30 Sekunden wieder aus
#_______________________________________

define Tackt_min dummy
attr Tackt_min eventMap on:on off:off
attr Tackt_min room Test

define axh at +*00:01:00 set Tackt_min on-for-timer 1
define ax10 notify Tackt_min set ELRO_11100_D on
define ax11 notify Tackt_min set ELRO_11100_D off


define test_Toggle notify ELRO_11100_A.*|ELRO_11100_B.*|ELRO_11100_D.* {\
my $hms = sprintf("%%02d:%%02d:%%02d", $hour, $min, $sec);;\
if ( $hms gt "21:10:00" && $hms lt "21:30:00"  &&\
$value{ELRO_11100_D} eq "on" && $ value{ELRO_11100_A} eq "on") {\
fhem ("set ELRO_11100_B on ;; define ELRO_11100_BAus at +00:00:30 set ELRO_11100_B off");;\
}\
}
attr test_Toggle room Test


Jetzt kann man eine Funksteckdose in die Hand nehmen und an allen möglichen Steckdosen im Haus
austesten.

m.f.G. Alfons

blueberry63

Hallo Alfons,

ich will Deine Idee nicht "schlechtreden", aber ich würde einfach mein Smartphone auf die Testrunde mitnehmen und die Steckdose über das Webinterface schalten.

Gruß
Blueberry63
FHEM auf BBB mit Wheezy: 1x CUL_HM_HM_SCI_3_FM, 1x INSTAR CAM3010, 1x HM-LC-SW1-PL2, 1x HM-LC-Bl1PBU-FM, 1x HM-Sen-MDIR-O, Viessmann Heizung, Gaszähler via GPIO, Klingel via HM-LC-Bl1PBU-FM an FBox, Mailcheck, AVR, XBMC, NanoCUL 433+668 an Raspi per Ethernet, Funksteckdosen (Pollin, IT), Automower

alfonsmoeller

Hallo blueberry,

Zitat
ich will Deine Idee nicht "schlechtreden", aber ich würde einfach mein Smartphone auf die Testrunde mitnehmen und die Steckdose über das Webinterface schalten.

in der Annahme das Du den Code gelesen hast, ist dir sicher aufgefallen das da noch etwas mehr dahinter steckt.

1. die Definition einer Funksteckdose
2. die Verküpfung mit einer Bedindung (Steckdose 1 muß eingeschaltet sein)
3. ein Zeitrahmen ist gesetzt (nur gültig von bis Uhrzeit)
4. eine Ausschaltzeit ist gesetzt (wird nicht ausgelassen wenn eine der anderen Bedingungen weggefallen ist)

Ich denke für einen Anfänger ist das schon mal eine brauchbare Anleitung.

m.f.G. Alfons

Puschel74

Hallo,

nur ein paar Anmerkungen - keine Kritik!!

Hier
$ value{ELRO_11100_A} eq "on") {
ist zwischen $ und value ein Leerzeichen wenn mich nicht alles täscht aber ...

das $value{} ist mittlerweile überholt.
Wenn du auf dem "Stand der Zeit" sein möchtest kannst du das gegen Value() tauschen.

Meinem bescheidenen Verständnis nach lässt das
define axh at +*00:01:00 set Tackt_min on-for-timer 1
define ax10 notify Tackt_min set ELRO_11100_D on
define ax11 notify Tackt_min set ELRO_11100_D off

den Empfänger ELRO_11100_D jede Minute ein-/ausschalten und eine Sekunde später nochmal ein-/ausschalten.
Oder hab ich da grad einen Knoten  :o

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

betateilchen

Manche Leute machen sich das Leben echt schwer. Mit at lassen sich doch auch einfach eine vordefinierte Anzahl von Wiederholungen definieren. Und man kann inzwischen sogar Intervalle direkt als Attribute definieren, in denen überhaupt etwas passieren soll.

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

alfonsmoeller

#5
Hallo Puschel74,
ich bin für jeden Hinweis dankbar.
Das Sytax von FHEM ist für mich noch sehr gewöhnungsbedürftig.

Das mit Value() werde ich befolgen.

Zitat
den Empfänger ELRO_11100_D jede Minute ein-/ausschalten und eine Sekunde später nochmal ein-/ausschalten.
Oder hab ich da grad einen Knoten 

In der Logdatei steht folgendes:


2014.04.24 15:57:20 2: IT set ELRO_11100_D off
2014.04.24 15:58:20 2: IT set ELRO_11100_D on
2014.04.24 15:58:20 2: IT set ELRO_11100_D off
2014.04.24 15:59:20 2: IT set ELRO_11100_D on
2014.04.24 15:59:20 2: IT set ELRO_11100_D off
2014.04.24 16:00:20 2: IT set ELRO_11100_D on
2014.04.24 16:00:20 2: IT set ELRO_11100_D off
2014.04.24 16:01:20 2: IT set ELRO_11100_D on
2014.04.24 16:01:20 2: IT set ELRO_11100_D off
2014.04.24 16:02:20 2: IT set ELRO_11100_D on
2014.04.24 16:02:20 2: IT set ELRO_11100_D off


Da habe ich auch noch einen Knoten! Wenn ich das Dummy Takt_min für meine
Zielsteckdose ELRO_11100_B nehme funktioniert das nicht. Ich muß den Tackt_min
über die Steckdose ELRO_11100_D leiten und dann mit ELRO_11100_D die Ziel-
steckdose ELRO_11100_B schalten.

anstatt: $value{ELRO_11100_D} eq "on" müßte  $value{Tackt_min} eq "on"
doch auch funktionieren ?

m.f.G. Alfons

Puschel74

#6
Hallo,

dein notify wird jedesmal getriggert wenn ELRO_11100_D schaltet.
Also jede Minute 2-mal (einmal on und einmal off).
Mit dieser Abfrage
$value{ELRO_11100_D} eq "on"
(Value(ELRO_11100_D) eq "on")
filterst du nur die "on" raus - also 50%.

Wenn du das schon mit einem at triggern willst kannst du das gerne machen.
Aber dann würde ich
define ax11 notify Tackt_min set ELRO_11100_D off
löschen und im regexp
define test_Toggle notify (ELRO_11100_A|ELRO_11100_B|ELRO_11100_D):on.*
prüfen.
Dann kannst du auch diesen Vergleich
$value{ELRO_11100_D} eq "on"
aus deinem notify rausnehmen da das notify nur getriggert wird wenn ELRO_11100_D on kommt.
Genauer on-irgendwas aber das sollte ja hier egal sein.

Was du aber mit dem "Umweg" meinst muss ich mir nochmal durchlesen.

Grüße

Edith: Wobei das
fhem ("set ELRO_11100_B on ;; define ELRO_11100_BAus at +00:00:30 set ELRO_11100_B off");;\
dein notify nochmal triggern wird.
Ich werd das mal mit Dummys nachbauen.
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

alfonsmoeller

#7
Hallo betateilchen,

Zitat
Manche Leute machen sich das Leben echt schwer. Mit at lassen sich doch auch einfach eine vordefinierte Anzahl von Wiederholungen definieren. Und man kann inzwischen sogar Intervalle direkt als Attribute definieren, in denen überhaupt etwas passieren soll.


Fakt ist, das die ersten Version so übernommen werden kann, und funktioniert. Alle anderen Vorschläge haben bei mir noch nicht
funktioniert. Sobald ich zurück bin werde ich weiter versuchen.

m.f.G. Alfons