Nur einmal täglich schalten

Begonnen von Invers, 06 Januar 2014, 20:37:37

Vorheriges Thema - Nächstes Thema

Invers

Ich habe folgenden Befehl, der eine Lampe einschaltet wenn es dunkel wird und ich zu Hause bin:

define Stehlampe_AutoAn at +*00:01:00 {if ((ReadingsVal("myTwilight","twilight_weather",0) < 31.1) && (Value("BinIchDa") eq "present")) {fhem "set Stehlampe on";;}}


Mein Problem ist nun, dass ich das Licht nicht mehr dauerhaft ausschalten kann.
Was kann ich denn machen, damit das Licht aus bleibt, wenn ich es per Hand mit einem FHEM - Befehl (also Klick auf Icon) abgeschaltet habe?


Noch besser wäre natürlich, dass die Automatik wieder aktiviert wird, sobald ich das Haus verlassen habe.

Ideen würden mich freuen, aber bitte wenn es geht, dann für ein Anfängerhirn.

Danke. :-)
Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

roedert

In dem notify welches das einschalten ausführt auch noch ein disable auf dieses notify setzen. Per Timer oder sonstwas kannst du es dann wieder enablen.

Invers

Danke, aber diese Antwort überfordert mich vorerst als Anfänger.
Etwas genauer wäre für mich verständlicher. Ich hab doch gar kein Notify verwendet. Kannst du nochmal was nachlegen ? :-)
Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

roedert

#3
Zitat von: Invers am 06 Januar 2014, 22:33:03
define Stehlampe_AutoAn at +*00:01:00 {if ((ReadingsVal("myTwilight","twilight_weather",0) < 31.1) && (Value("BinIchDa") eq "present")) {fhem "set Stehlampe on";;}}

Die Lösung ist generell nicht "sauber", du belastet das System nur unnütz indem du aller 1 Minute das if abfragst.

Besser ist es nur auszuwerten wenn neue Daten geliefert werden, zB so:

define Stehlampe_AutoAn notify myTwilight:twilight_weather {if ((ReadingsVal("myTwilight","twilight_weather",0) < 31.1) && (Value("BinIchDa") eq "present")) {fhem "set Stehlampe on; attr Stehlampe_AutoAn disable 1";;}}

Dadurch wird das if nur ausgeführt wenn FHEM einen neuen Wert für myTwilight:twilight_weather bekommt. Trifft die Bedingung zu, wird die Lampe geschaltet und das notify deaktiviert - also kann das Licht nicht wieder automatisch bei Dunkelheit eingeschaltet werden.

Du kannst dieses zB automatisch jeden Tag mittags wieder aktivieren mit

define enable_Stehlampe_AutoAn at *12:00:00 attr Stehlampe_AutoAn disable 0

...oder auch mit einem PRESENCE auf dein Handy, wenn du (bzw. dein Handy) das Haus verlässt, wird es wieder aktiviert


Aber noch eine Frage interessehalber: Was steckt hinter dem myTwilight:twilight_weather?
Ich suchte auch eine Lösung zum Einschalten bei Dunkelheit. Sunset ist wenig hilfreich, da es unabhängig von Bewölkung etc. ist und so nicht wirklich die Helligkeit widerspiegelt. Und da es keine Helligkeitssensoren gibt (nicht welche die bei Dunkelheit selbst einschalten, sondern welche mir kontinuierlich einen Helligkeitswert liefern), habe ich mir einen Temperatursensor mit Fotowiderstand zum Helligkeitssensor umgebaut. Funktioniert halbwegs, besser wäre statt Fotowiederstand glaube ich aber einen UV-Sensor um Bewölkung und somit "gefühlte Dunkelheit" besser erkennen zu können.

Korrektur: Gerade selbst gefunden - das TWILIGHT-Modul war mir bisher noch gar nicht bekannt......

Invers

Erst einmal vielen Dank für die mühe, die du dir gemacht hast. Nun habe ich auch verstanden, worum es geht und werde alles umschreiben und testen. Gegebenenfalls melde ich mich dazu noch einmal, wenn ich darf.

Ich habe früher mit Sunset geschaltet. Das ist aber unbefriedigend, da die Events nicht wirklich passen, auch dann nicht, wenn man sie anpasst.
Nun nehme ich einfach den Wetterwert in der bis jetzt unbestätigten Hoffnung,  dass ich nun immer zu einer selben, bestimmten Helligkeit schalten kann. Natürlich bin ich damit immernoch von der Qualität des Wetterdienstes abhängig. Nicht immer sagen die "wolkig" wenn es bei mir halt wolkig ist. Aber allgemein scheint es besser zu klappen, als andere Auswertungen.


Mist, deine Korrektur habe ich zu spät gesehen. Nun lasse ich meine Erklärung aber stehen, denn ich will auch mal was Kluges sagen. LOL
Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

Invers

Ich muss noch einmal um Hilfe bitten.

Kann es sein, dass da noch ein Fehler drinnen ist?
define Stehlampe_AutoAn notify myTwilight:twilight_weather {if ((ReadingsVal("myTwilight","twilight_weather",0) < 31.1) && (Value("BinIchDa") eq "present")) {fhem "set Stehlampe on; attr Stehlampe_AutoAn disable 1";;}}
Wenn ich die Zeile kopiere und in die Befehlszeile von FHEM eingebe, bekomme ich bei der Kontrolle die unten im Bild dargestellte Anzeige.

Bei Attributes steht halt  disable  1";}}
Darum gehe ich von einem Syntaxerror aus, der mir aber in der Log nicht angezeigt wird.
Ein Test ergab, dass die Zeile auch nicht schaltet.

Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

roedert

...hab momentan nix zum Testen, probier mal:

define Stehlampe_AutoAn notify myTwilight:twilight_weather {if (ReadingsVal("myTwilight","twilight_weather",0) < 31.1 && Value("BinIchDa") eq "present") {fhem("set Stehlampe on; attr Stehlampe_AutoAn disable 1")}}

Invers

Nö, geht leider auch nicht. Bei gleicher Verfahrensweise steht da jetzt:
disable 1")}}
Es erfolgt keine Schaltung.
Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

OiledAmoeba

Moin,

das disable 1")}} ist ein Überbleibsel daraus, dass der Befehl {fhem ... von fhem nicht interpretiert wird.
Schau mal in dein Log, da sollten Einträge wie "Unknown command {fhem" drin sein.

So dürfte es aber gehen:
define Stehlampe_AutoAn notify myTwilight:twilight_weather {if (ReadingsVal("myTwilight","twilight_weather",0) < 31.1 && Value("BinIchDa") eq "present") set Stehlampe on; attr Stehlampe_AutoAn disable 1;}

Warum das so ist? Pffft... (dicke Backen)
Tritt bei mir aber auch gerade auf. Auch bei Schaltungen, die sonst immer funktionierten. Es gibt auch noch einen weiteren Thread, wo heute ein ähnliches Problem berichtet wurde.

Perl arbeitet den Befehl {fhem "set Stehlampe on; attr Stehlampe_AutoAn disable 1";;}} nicht im Ganzen, sondern Stück für Stück ab. Zuerst trifft Perl auf {fhem "set Stehlampe on;, findet darin den Fehler "Unknown command" und bricht ab. Danach kommt attr Stehlampe_AutoAn disable 1";;}}, was Perl dann wieder interpretieren kann und dementsprechend disable auf 1";;}} setzt (Perl hat hier schon wieder vergessen, dass da ein Befehl mit einer öffnenden geschweiften Klammer voranging. Der Befehl wurde fehlerhaft verworfen und damit von Perl vergessen).
Gruß
Florian

Jail auf XigmaNAS (freeBSD); CCU2 mit CULv3, nanoCUL868 und JeeLink-Clone; div. FS20-Komponenten; andFHEM; div. hm- und hmip-Komponenten; div. IT+

Invers

Geht auch nicht. Jetzt kommt der Fehler:
Unknown command }, try help:(
Schade.

Ich hatte übrigens keine Fehlermeldung im Log.
Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

Puschel74

Hallo,

und so?
define Stehlampe_AutoAn notify myTwilight:twilight_weather {
  if (ReadingsVal("myTwilight","twilight_weather",0) < 31.1 && Value("BinIchDa") eq "present"){
    fhem("set Stehlampe on");
    fhem("attr Stehlampe_AutoAn disable 1");
  }
}


Genau sovielen öffenden Klammern müssen auch schliessende Klammern gegenüberstehen - das ist bei { und bei ( der Fall.
Bitte durchzählen.
Ebenso mit den "
Notepad++ zeigt das aber schön an.

Die commandref im Abschnitt attr ist auch nicht uninteressant sowie allgemein das Einsteiger.pdf

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.

Invers

Jetzt bekomme ich bei Eingabe des Codes in die Kommandozeile die Fehler:
Unknown command fhem("attr, try help.
Unknown command }, try help.

Darf man den Code vielleicht gar nicht in die Kommandozeile eingeben?

Die angeführten Doks hatte ich bereits mehrfach gelesen und ziehe sie auch immer zu Rate. Aber manchmal komme ich nicht weiter. Besonders hinderlich sind da meine fehlenden Englischkenntnisse und die Commandref enthält nicht alle Erklärungen in der deutschen Version. Zu vielen Dingen ist da zwar ein Link, aber der läuft dann ins Leere. Schade, dass die deutsche Commandref so unvollständig ist. Die Google Übersetzung hilft da leider auch nicht immer weiter.
Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

OiledAmoeba

Verflixt, hab's gerade gemerkt, als ich Puschels Post gelesen habe. Denn da ich alles mit Notepad++ schreibe und dann in DEF übertrage, war ich mir sicher, dass ich alle Klammern hatte.

Hatte ich auch.

Aber: Perl und FHEM benutzen denselben Trenner (;). Ich habe vergessen, hier set Stehlampe on; attr Stehlampe_AutoAn disable 1 zu sagen, dass es kein Perl-, sondern ein FHEM-Trenner ist. Zwischen on und attr statt einem einfach zwei Semikola und der Code läuft bei mir.

Generell bin ich aber auch eher ein Freund der übersichtlichen Mehrzeiler.
Gerade bei der Fehlersuche ist ein mehrzeiliger Code Gold wert.
Gruß
Florian

Jail auf XigmaNAS (freeBSD); CCU2 mit CULv3, nanoCUL868 und JeeLink-Clone; div. FS20-Komponenten; andFHEM; div. hm- und hmip-Komponenten; div. IT+

OiledAmoeba

Zitat von: Invers am 07 Januar 2014, 11:31:37
Darf man den Code vielleicht gar nicht in die Kommandozeile eingeben?
Den Code von Puschel? Nein, darfst Du so nicht.

Wenn Du den Code von Puschel in die Kommandozeile eingeben möchtest, dann muss hinter jede Zeile "Leerzeichen Backslash" geschrieben werden, also z.B. define Stehlampe_AutoAn notify myTwilight:twilight_weather { \

Einfacher geht's aber, wenn Du die Kommandozeile nur zur "Grunddefinition" nimmst und den Code selbst über die Detailansicht (und dann den DEF-Knopf) eingibst.

Also:
define Stehlampe_AutoAn notify myTwilight:twilight_weather { <ENTER-Taste>, dann unter "unsorted" den Eintrag Stehlampe_AutoAn anklicken, dort dann auf DEF klicken (ist ein Button, wird als solcher aber nicht angezeigt!) und anschließend den restlichen Code reinkopieren. Zum Schluss klickst Du dann noch auf den Knopf "modify Stehlampe_AutoAn". Fertig.
Gruß
Florian

Jail auf XigmaNAS (freeBSD); CCU2 mit CULv3, nanoCUL868 und JeeLink-Clone; div. FS20-Komponenten; andFHEM; div. hm- und hmip-Komponenten; div. IT+

Puschel74

Hallo,

ZitatDarf man den Code vielleicht gar nicht in die Kommandozeile eingeben?
:o
Wenn du die Zeilen einzeln in die Befehlszeile von FHEM eingibst ist das für FHEM kein Code-Bestandteil sondern etwas was sofort ausgeführt werden soll.

Nur gut das es dazu erst (gefühlt) 10 Beiträge gibt.

Wenn du ein at oder ein notify in FHEM anlegen willst dann so:
define Stehlampe_AutoAn notify myTwilight:twilight_weather {}
in die Befehlszeile eingeben und dann so anpassen das es so wie im Screenshot aussieht.
Das DEF vorne dran lässt sich anklicken  ;)

Grüße

Edith: Zu langsam - aber ich wollt meinen Beitrag nichtmehr löschen  8)
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.