Ein seltsames Phänomen mit Makros und Intertechno

Begonnen von sumacova, 10 März 2013, 19:08:41

Vorheriges Thema - Nächstes Thema

sumacova

Liebe FHEM-Gemeinde
Zuerst grossen Dank an die Entwickler dieses tollen Produkts und an die vielen Helfer für die vielseitige Unterstützung und die vielen Verbesserungen!
Ich betreibe FHEM nun ca. 3 Monate zuverlässig und problemlos auf einem Himbeertörtchen (Raspberry Pi). Steuere/überwache die Temperatur mehrerer Heizkörper in 3 Zimmern und schalte Strom und Licht zeitgesteuert mit Intertechno Schaltern. Hier nun das Phänomen, bei welchem ich nicht schlau werde. Die Konfiguration der Schalter und Makros habe ich von einer Vorlage kopiert.
------------
Funktioniert:
define warmwasser.nmittag.wk at *13:00:00 {if (!($we)) {fhem("trigger n.warmwasser.auto on-till 13:55")} }
define n.warmwasser.auto notify n.warmwasser.auto { if ($value{"warmwasser.schalt.S"} eq "auto") { fhem("set warmwasser.schalt %") } }
------------
Funktioniert nicht:
define wasserbett.nacht at *21:30 trigger {fhem("n.wasserbett.auto on-till 06:00")}
define n.wasserbett.auto notify n.wasserbett.auto { if ($value{"wasserbett.schalt.S"} eq "auto") { fhem("set wasserbett.schalt %") } }
------------
Es gibt keine Fehlermeldung, kein Log - nichts.
Wenn ich einen Fehler einbaue (on-till ohne Zeitangabe, On-till 06:) erfolgt eine Fehlermeldung, wenn ichs korrigiere passiert wieder nichts.
Gibt es eine Beschränkung der Anzahl, hat jemand Erfahrungen gemacht oder gibt es andere Suchmöglichkeiten?
Ich wäre für Eure Hinweise sehr dankbar. Bei Bedarf lade ich das komplette Fhem.cfg hoch.

Freundliche Grüsse aus der Schweiz
Martin

bsl02

Hallo Martin,

>Funktioniert nicht:
>define wasserbett.nacht at *21:30 trigger {fhem("n.wasserbett.auto on-till 06:00")}...

Teste bitte mal die Zeit in der langen Version mit *21:30:00 trigger... einzugeben, wie bei Deinem Warmwasser auch.

Wobei ich gerade sehe, das es auch mit "kurzer" Uhrzeit gehen sollte:
Commandref /Notes: on-till requires an absolute time in the "at" format (HH:MM:SS, HH:MM or { <perl code> }, where the perl-code returns a time specification).

Am Rande bemerkt: Mein WaBett lasse ich ca. 4 Stunden vorher aufheizen, kürzer traue ich mich nicht.

Gruß und ein rechtzeitig temperiertes Wasserbett,
Stefan
RPi3 (FHEM) / CUL V3 868 (FS20) / nanoCUL868 (HM) / RFXtrx433 (IT & ELRO) / MAX!Cube (Thermostate, Fenster) / Bluetooth (presence Handy) / Sonoff mit Tasmota // Audio: RPi3 mit "max2play"-Image (Squeezeserver+Player) / Video: Synology-NAS mit TVheadend, Triax TSS400 Sat-IP Converter

rudolfkoenig

> ... trigger {fhem("n.wasserbett.auto on-till 06:00")}

Eigentlich muesste das die Fehlermeldung

Please define {fhem("n.wasserbett.auto first

liefern, da trigger sein Argument nicht als Perl Skript interpretiert. Selbst wenn, wuerde das o.g. nicht sehr sinnvoll sein. Ich empfehle die Argumente (d.h. das was ausgefuehrt werden soll) von at/notify in der Kommandozeile direkt zu testen, da sieht man direkter die Fehlermeldungen.

sumacova

Ciao Stefan
Danke für die prompte Antwort. In der Übersicht unter AT bekomme ich als Next: 21:30:00 angezeigt, deshalb vermute ich die Startzeit funktioniert auch mit 4 Stellen, aber du hast recht, die anderen Zeiten habe ich 6-stellig eingetragen - ich versuchs. Ansonsten habe ich wirklich keine Ahnung weshalb dies ohne Fehlerangabe einfach nicht funktioniert.
Apropos Wasserbett: Bisher war es permanent eingeschaltet - mit Temperatur-Regler natürlich - da ein Wasserbett jedoch pro Jahr 500 kWh braucht x2 = 1000kWh/Jahr dachte ich es lohnt sich dieses per Nacht-Tarif zu beheizen, deshalb 21:30 Uhr :)

Gruss Martin

sumacova

Stimmt, würde keinen Sinn machen, wenns nicht definiert wäre......

Das ganze simuliert Zeitschaltuhren, wo ich Lampen/Geräte etc. zu verschiedenen Zeiten schalten kann. Damit's pflegeleicht ist, fragt jeder at Befehl einen (auto/man) Schalter ab, damit das Ganze einfach ein und ausgeschaltet werden kann.
Hier die Definitionen:
IT Schalter:
define wasserbett.schalt IT L5 FF F0
attr wasserbett.schalt IODev CUL_0
attr wasserbett.schalt devStateIcon on:Heizung_Hauptschalter.on off:Heizung_Hauptschalter.off
attr wasserbett.schalt icon icoLichtHaus
attr wasserbett.schalt model itswitch
attr wasserbett.schalt room 30_Schalter
Auto/Man Dummy Schalter
define wasserbett.schalt.S dummy
attr wasserbett.schalt.S devStateIcon auto:Restart man:StandBy
attr wasserbett.schalt.S eventMap on:auto off:man
attr wasserbett.schalt.S room 30_Schalter
attr wasserbett.schalt.S setList state:auto,man
attr wasserbett.schalt.S webCmd state
define n.wasserbett.auto notify n.wasserbett.auto { if ($value{"wasserbett.schalt.S"} eq "auto") { fhem("set wasserbett.schalt %") } }
define wasserbett.nacht at *21:30 trigger {fhem("n.wasserbett.auto on-till 06:00")}

Die ganze Geschichte mit "Warmwasser" funktioniert

Sogar die einfach Variante klappt nicht:
define n.wasserbett.man notify n.wasserbett.man set wasserbett.schalt %
trigger n.wasserbett.man on-till 06:00 = keine Reaktion
trigger n.wasserbett.man on-till 06 = Fehlermeldung
n.wasserbett.man return value: Wrong timespec 06: either HH:MM:SS or {perlcode}

Was mich beunruhigt, 5 Schalter sind nach gleichem Muster aufgebaut nur dieser funktioniert nicht.
Wenn jemand grundsätlich eine bessere Lösung hat, bin ich dankbarer Abnehmer.

Herzlichen Dank

Gruss Martin

bsl02

Hallo Martin,

bin selbst kein gelernter "FHEM-ler", aber für _mein_ warmes Wasserbett würde ich
- den Intertechno-Schalter direkt ansteuern (at *21:30 set wasserbett.schalt on)
- und ggfs. Notify´s nur mitlaufen lassen.

Bitte testen über FHEM-Kommandofeld ob das bei Dir läuft (Reichweitencheck):
"set wasserbett.schalt on"

In der Vergangenheit standen für Intertechno nicht alle Befehle wie bei FS20 zur Verfüung. Aus diesem Grunde habe ich mich für getrennte Ein- und Ausschaltvorgänge je Uhrzeit entschieden.

>Deine Konfig: ...{ fhem("set wasserbett.schalt %") }
Weiterhin: Teste bitte mal, ob ON/OFF mit "%" auch bei Dir auf Intertechno korrekt übermittelt wird.

Hinweise in der Commandref zu Intertechno-Schaltern:
http://fhem.de/commandref.html#IT

Zum Vergleich meine Einstellung für den Intertechno-Schalter vor dem Heizkessel. Unser Wasserbett läuft dagegen mit FS20-Schalter wegen der im Vergleich mit Intertechno größeren Reichweite.


# Definition IT-Schalter "ELRO3" (Heizkessel)
define std_elroA3 IT FFFFFF000F 11 10
attr std_elroA3 IODev CUL
attr std_elroA3 alias Heizg_elroA3
attr std_elroA3 comment Heizung Keller elroA3
attr std_elroA3 model itswitch

# Timer 1:
define Heizg1_on at *04:30 set std_elroA3 on

# Timer 2:
define Heizg2_OFF_MoFr at *08:15 {  if (!$we) { fhem("set std_elroA3 off")}}
#wenn "nicht Wochenende", wird ausgeschaltet um 8:15h

# weitere Timer gesetzt nach obigen Mustern

## Check auf Feiertag / Ich weiss man kann das schöner machen:
# 1) Dummy Feiertag definieren, wird bei Urlaub etc noch über Weboberfläche geschaltet:
define HzgFeiertagDum dummy
attr HzgFeiertagDum webCmd on:off
# 2) Prüfung alle 5 Minuten, ob Dummy Feiertag ON ist. Wenn Dummy ON wird spätestens dann die Heizung ON geschaltet:
define actHeizgFeiertag at +*00:05:00 { if ("$value{HzgFeiertagDum}" eq "on" && "$value{std_elroA3}" ne "on") {fhem("set std_elroA3 on")} }


Hoffentlich kannst Du damit etwas anfangen - und ich erzähle keinen Blödsinn ;-).
Grüße in die Schweiz,
Stefan
RPi3 (FHEM) / CUL V3 868 (FS20) / nanoCUL868 (HM) / RFXtrx433 (IT & ELRO) / MAX!Cube (Thermostate, Fenster) / Bluetooth (presence Handy) / Sonoff mit Tasmota // Audio: RPi3 mit "max2play"-Image (Squeezeserver+Player) / Video: Synology-NAS mit TVheadend, Triax TSS400 Sat-IP Converter

sumacova

Ciao Stefan, und natürlich alle Fhem'ler
Vielen Dank für die Hinweise, Folgendes habe ich getestet:
IT Schalter funktioniert, Distanz ist kein Problem, wenn ich den dummy IT Schalter in fhem betätige, schaltet das Bett ein / aus
scheint dass lediglich on-till ein Problem bietet, seltsamerweise nur bei 1 aus 5 Konfigurationen.
Mit on-till möchte ich erreichen, dass auch wenn ich die Automatik auf manuell schalte, das Bett in jeden Fall noch ausschaltet.
Mit meinen wasserbett.schalt.S möchte ich erreichen, dass ich die Automatik auf Knopfdruck ein/ausschalten kann.
Das ganze klappt bereits bei Warmwasser-Begleitheizung, Schildkröten-Heizung, Abwesenheitslicht und Weihnachtsbeleuchtung :)

Das Wasserbett ist daher permanent eingeschaltet, denn frieren wollen wir ja denn nicht! ;)

Ich getraue mich nur nicht zusätzliche Schalter zu implementieren, obschon der Fantasie wären da keine Grenzen gesetzt und an guten Einsatzmöglichkeiten fehlt's nicht.

Für gute Eingebungen bin ich dankbar
Gruss Martin