Hallo FHEM Freunde,
Ich habe seit einiger Zeit das FS20 System im Einsatz mit Steckdosen und Dimmern.
Nun habe ich über meine Fritzbox diesen CUL angeschlossen.
Die einzelnen Aktoren sind bereits angelernt und Beschriftet.
Nun zu meiner Frage, da ich nicht weiter weiss und mir auch der Anfang fehlt.
Zu Weihnachten würde ich gerne 5 Steckdosen als Zeitschaltuhr benutzen für Beleuchtungen.
z.B. das vom 01.12.2013 bis 02.01.2014 jeweils von 18.00 Uhr bis 01.00 Uhr die Steckdosen eingeschaltet sind.
Hier ein paar Daten von meinem System.
NAME FS20_19cba1 NR 73 alias Tannenbaum model fs20st room Weihnachten
NAME FS20_19cba0 NR 71 alias Lichtkette Außen model fs20st room Weihnachten
NAME FS20_19cba3 NR 77 alias Küche Glas model fs20st room Weihnachten
Wie gehe hier genau vor???? Das heisst wie erstelle ich eine solche Datei usw.
Lösungen wären Super. Bin ein absoluter Neuling auf diesem Gebiet!!!
Besten Dank,
Fabian
Zitat von: DJCrazy schrieb am Mi, 09 Oktober 2013 23:44NAME FS20_19cba1 NR 73 alias Tannenbaum
als erstes würde ich die Aktoren mal sinnvoll umbenennen
rename FS20_19cba1 Tannenbaum
Hallo!
Vielleicht in der Art:
define Weih notify *17:00:00 {\
if (($month == 12) || (($month == 1) && ( $wday < 3))) {\
fhem("define Weih_an at +01:00 set Lampe1 on;;;;set Lampe2 on;;;;set Lampe3 on");;\
fhem("define Weih_aus at +08:00 set Lampe1 off;;;;set Lampe2 off;;;;set Lampe3 off");;\
}
Die Namen der Lampenaktoren musst du noch anpassen.
MfG, MisterEltako
Danke für die ersten Antworten.
Die einzelnen Geräte Habe ich ja bereits unbenannt. Dafür steht ja das alias.
Mit der zweiten Antwort von MisterEltako kann man sicher was anfangen.
Nur muss ich das alles in die obere Zeile eingeben oder wie geht das.
Hier fehlt mir eben der Lösungsansatz.
Bitte um eine genaue Beschreibung.
Hast Du http://fhem.de/Heimautomatisierung-mit-fhem.pdf (//fhem.de/Heimautomatisierung-mit-fhem.pdf) schon gelesen?
Wenn nicht, mach das doch mal und frage dann hier wieder nach Sachen die Du nicht verstanden hast.
Die oben geschriebenen Codezeilen müssten bei meinem Vorschlag in die Datei fhem.cfg geschrieben werden.
Diese erreichst du in der li. Menuleiste über "Edit Files". Meinst du dies?
ganz kurz:
Die Zeilen bewirken, dass um 17 Uhr geprüft wird, ob Weihnachtszeit ist. Wenn "ja", dann wird eine Anschaltzeit für 1 Stunde später(also 18 Uhr)und eine Ausschaltzeit in 8 Stunden später(also 1 Uhr) angelegt.
So verständlich?
PS: Man kann das Ergebnis auch über andere "Codewege" erzielen, dass ist ja das schöne an FHEM. Ich würde eben das o.g. vorschlagen.
MfG, MisterEltako
Zitat von: MisterEltako schrieb am Do, 10 Oktober 2013 09:25Man kann das Ergebnis auch über andere "Codewege" erzielen, dass ist ja das schöne an FHEM. Ich würde eben das o.g. vorschlagen.
Ich würde solche Saisongeschichten völlig simpel über die Anbindung an einen Google Kalender lösen, dann brauche ich im Coding keinerlei Prüfungen (ist grade Weihnachtszeit?) machen. Über diesen Weg steuere ich z.B. in der Heizperiode auch die Heizkörper und deren Heizzeiten vollautomatisch und flexibel.
Und ein Alias hat mit Umbenennen nicht viel zu tun.
Jeder wie er es mag! ;o))
PS: Hilfreicher als die Verweise auf Dokumente wäre sicher den Unterschied(rename / alias) kurz zu erläutern.
So in der Art:
alias - Pseudoname der in FhemWeb angezeigt wird (Aktorname z.B. FS20_19cba1 bleibt kryptisch)
rename - Aktor wird komplett umbenannt und erhält den neuen gewählten Namen und wird auch mit diesem angesprochen
MfG, MisterEltako
Hallo zusammen,
Mit der Anleitung von http://fhem.de/Heimautomatisierung-mit-fhem.pdf (//fhem.de/Heimautomatisierung-mit-fhem.pdf) bin ich schon etwas weiter gekommen.
Die Grundlagen habe ich so weit verstanden und habe auch schon eine Notify erfolgreich anlegen können.
Nun stehen mir noch 2 Fragen offen im Raum.
1. Bei einer Notify für den TVAbend habe ich das Problem das ich die Lampe nicht dimmbar angeht.
Funktioniert das dim50% bei einer Aufzählung?? Den mit dem Befehl on statt dim50% geht es.
DEF TVAbend:on set wzTVAnlage on;set wzStehlampe on;set flKugelLampe off - Funktioniert
DEF TVAbend:on set wzTVAnlage on;set wzStehlampe dim50%;set flKugelLampe off - Geht NICHT.
2. Google Kalender habe ich in FHEM eingefügt um damit die Zeitschaltuhr zu realisieren.
Gibt es hierfür eine Anleitung??
Muss ich den Kalender öffentlich freigeben bei Google?
Wie aktiviere ich perl module IO::Socket::SSL. Bei Eingabe n -i IO::Socket::SSL passiert nichts
Wie sehe ich das der Kalender richtig aktiv ist in FHEM?
Danke........
Zitat von: DJCrazy schrieb am Fr, 11 Oktober 2013 12:20Muss ich den Kalender öffentlich freigeben bei Google?
Nein, Du brauchst nur die private ICAL-Url, die in Deinem Kalender angezeigt wird.
Zitat von: DJCrazy schrieb am Fr, 11 Oktober 2013 12:20Wie aktiviere ich perl module IO::Socket::SSL. Bei Eingabe n -i IO::Socket::SSL passiert nichts
Auf welcher Fritzbox arbeitest Du?
Zitat von: DJCrazy schrieb am Fr, 11 Oktober 2013 12:20Wie sehe ich das der Kalender richtig aktiv ist in FHEM?
Wenn in fhem bei der Kalenderdefinition ein "Active" steht und die Readings gefüllt sind:
(siehe Anhang / see attachement)
Ich arbeite mit der FritzBox 7390.
Der Kalender ist bei FHEM auf Aktive.
Somit stimmt das ganze bis dahin schon einmal.
Wie kann ich jetzt über Google Kalender 5 Steckdosen von 01.12.13 bis 03.01.14 jeweils von 18 bis 01 Uhr steuern?
Schau mal bitte in die commandref zum Kalendermodul, dort ist beschrieben, wie man grundsätzlich Aktoren über den Kalender schalten kann.
Bei mir gibt es zwei notify, jeweils eines zum Ein- und eines zum Ausschalten.
Einschalten: Kalender_Schalter:modeStarted.* { calSchalterStart("$EVENT") };
Ausschalten: Kalender_Schalter:modeEnded.* { calSchalterEnde("$EVENT") };
Die beiden zugehörigen Funktionen liegen bei mir in der 99_myUtils.pm
sub
calSchalterStart ($)
{
my ($Ereignis) = @_;
my @Ereignisarray = split(/.*:\s/,$Ereignis);
my $Ereignisteil1 = $Ereignisarray[1];
my @uids=split(/;/,$Ereignisteil1);
foreach my $uid (@uids) {
my $actor = fhem("get Kalender_Schalter summary $uid");
fhem("set $actor on");
};
}
sub
calSchalterEnde ($) {
my ($Ereignis) = @_;
my @Ereignisarray = split(/.*:\s/,$Ereignis);
my $Ereignisteil1 = $Ereignisarray[1];
my @uids=split(/;/,$Ereignisteil1);
foreach my $uid (@uids) {
my $actor = fhem("get Kalender_Schalter summary $uid");
fhem("set $actor off");
};
}
Diese beiden Funktionen stellen sicher, dass auch mehrere Kalendereinträge zur gleichen Zeit geschaltet werden können.
Im Google-Kalender legst Du dann einfach einen ganz normalen Kalendereintrag an. In den Betreff schreibst Du den fhem-Namen des Aktors, dann legst Du die Start- und die Endezeit fest und ggf. einen Wiederholungszyklus.
Beispieleintrag aus meinem Kalender:
(siehe Anhang / see attachement)
Ist meine 99_myUtils.pm richtig?
package main;
use strict;
use warnings;
use POSIX;
sub
myUtils_Initialize($$)
{
my ($hash) = @_;
}
1;
sub
calSchalterStart ($)
{
my ($Ereignis) = @_;
my @Ereignisarray = split(/.*:\s/,$Ereignis);
my $Ereignisteil1 = $Ereignisarray[1];
my @uids=split(/;/,$Ereignisteil1);
foreach my $uid (@uids) {
my $actor = fhem("get Kalender_Schalter summary $uid");
fhem("set $actor on");
};
}
sub
calSchalterEnde ($) {
my ($Ereignis) = @_;
my @Ereignisarray = split(/.*:\s/,$Ereignis);
my $Ereignisteil1 = $Ereignisarray[1];
my @uids=split(/;/,$Ereignisteil1);
foreach my $uid (@uids) {
my $actor = fhem("get Kalender_Schalter summary $uid");
fhem("set $actor off");
};
}
Das heisst mit den beiden Notify und der Funktion in 99_myUtils.pm werden automatisch alle Einträge geschalten?
Jedoch welche Aktoren??
Hier noch die beiden Notify. So auch richtig?
(siehe Anhang / see attachement)
(siehe Anhang / see attachement)
Zitat von: DJCrazy schrieb am Fr, 11 Oktober 2013 15:54Ist meine 99_myUtils.pm richtig?
Nein. 1; muss die letzte Zeile sein.
Zitat von: DJCrazy schrieb am Fr, 11 Oktober 2013 15:54Das heisst mit den beiden Notify und der Funktion in 99_myUtils.pm werden automatisch alle Einträge geschalten?
Jedoch welche Aktoren??
Du solltest die Antworten auch komplett
lesen, die man Dir schreibt.
Zitat von: betateilchenIm Google-Kalender legst Du dann einfach einen ganz normalen Kalendereintrag an. In den Betreff schreibst Du den fhem-Namen des Aktors, dann legst Du die Start- und die Endezeit fest und ggf. einen Wiederholungszyklus.
Hallo Betalteilchen,
Die 99_myUtils.pm habe ich abgeändert und sollte stimmen. Refresh auch bereits erledigt.
In meinen Kalender habe einen Termin gesetzt mit dem Namen weihAllesAus
FHEM erkennt diesen Kalender Eintrag auch jedoch wird dieser Aktor mit dem Namen weihAllesAus nicht geschalten.
Im Logfile ist nichts zu sehen.
Warum das??
Sind meine Notify richtig?? Stimmen hier alle Namen?
ich kann nicht hellsehen, darum kann ich Dir Deine Frage nicht beantworten.
Zeig mal die Definition Deines Kalenders (die url kannst Du abkürzen)
Zeig mal Deinen Kalendereintrag.
Zeig mal die Definiton von weihAllesAus in fhem
Du hast deinen Kalender ja FHEM_Schalter genannt.
Jedoch sehe ich nicht in deinem Code wo dieser Name eingegeben ist.
Sorry wenn ich nerve, würde das jedoch gerne zum laufen bekommen.
Welche Angaben werden benötigt um mir weiter helfen zu können?
siehe oben
Es nützt Dir nix, blind einfach copy&paste zu machen. Das wird nicht funktionieren, solange Du nicht verstehst, was Du eigentlich tust.
---
Hier nochmals ein paar Ausschnitte.
Danke schon mal im Voraus für die tolle Unterstützung.
PS: Ich will es verstehen, aber das benötigt Übung und ein Beispiel das bei mir funktioniert......
(siehe Anhang / see attachement)
(siehe Anhang / see attachement)
(siehe Anhang / see attachement)
(siehe Anhang / see attachement)
Hier noch die Daten von den Notify in Übersicht und Detail.
Diese nennen sich jetzt SchalterStart / SchalterEnde wie im 99 file
(siehe Anhang / see attachement)
(siehe Anhang / see attachement)
(siehe Anhang / see attachement)
(siehe Anhang / see attachement)
Ob die Termine gelesen wurden, läßt sich so nicht beantworten. Es ist ratsam, die Termine zum Schalten von Deinem "normalen" Google-Kalender zu trennen, also einen eigenen Kalender für die Zeitschaltuhr in Deinem Account anlegen. Das erleichtert die Installation und die Fehlersuche erheblich.
Und Du solltest zum Anfang vielleicht einen Termin wählen, der erst geschaltet werden SOLL und nicht schon aktiv ist, wenn Du den Kalender in fhem aktualisiert.
Den Kalender in fhem solltest Du zum Testen manuell updaten.
Zum Testen war der Termin noch nicht abgelaufen.
Den Google Kalender benutze ich nur für FHEM. Hatte den bis gestern nie genutzt.
Kalender Update habe ich bis jetzt immer manuell gemacht vor dem Test.
Aber sonst meinst du passt alles. Also Notify, 99-myUtils.pm usw?
Wie genau muss ich die notify anlegen wenn ich es in die Leiste oben eingeben will.
Den die beiden habe ich auf etwas komische Art angelegt und danach abgeändert.
Nun habe ich einen zweiten Kalender nur für FHEM und heisst wie bei Dir FHEM_Schalter.
Link habe ich in FHEM aktualisiert und update gemacht
Hier noch ein Auszug aus dem Logfile.
Gibt es hier was zu erkennen?
Was mich etwas wundert habe ich Rot markiert
2013.10.11 18:54:03 0: Server shutdown
2013.10.11 18:54:07 1: Including fhem.cfg
2013.10.11 18:54:07 3: telnetPort: port 7072 opened
2013.10.11 18:54:08 3: WEB: port 8083 opened
2013.10.11 18:54:08 3: WEBphone: port 8084 opened
2013.10.11 18:54:08 3: WEBtablet: port 8085 opened
2013.10.11 18:54:09 3: Opening fbaha device localhost:2002
2013.10.11 18:54:09 3: fbaha device opened
2013.10.11 18:54:09 1: FBAHA fbaha registered with handle: 00000011
2013.10.11 18:54:09 3: Opening CUL_0 device /dev/ttyACM0
2013.10.11 18:54:09 3: Setting CUL_0 baudrate to 38400
2013.10.11 18:54:09 3: CUL_0 device opened
2013.10.11 18:54:09 3: CUL_0: Possible commands: BCFiAZEGMRTVWXefmltux
2013.10.11 18:54:15 1: CustomGetFileFromURL <hidden>: Select timeout/error:
2013.10.11 18:54:15 1: Calendar MyCalendar: Could not retrieve file at URL
2013.10.11 18:54:15 1: Including ./log/fhem.save
2013.10.11 18:54:15 1: usb create starting
2013.10.11 18:54:16 1: usb create end
2013.10.11 18:54:16 2: SecurityCheck: WEB,WEBphone,WEBtablet has no basicAuth attribute. telnetPort has no password/globalpassword attribute. Restart fhem for a new check if the problem is fixed, or set the global attribute motd to none to supress this message.
2013.10.11 18:54:16 0: Server started with 63 defined entities (version $Id: fhem.pl 3872 2013-09-07 11:58:33Z rudolfkoenig $, os linux, user boxusr99, pid 2275)
In welcher Datei werden den die Daten aus dem Kalender gelesen.
Wo oder was verweisst auf den Google Kalender?
cjbasa8ecshfsov6abmr3nvhmggooglecom known start 11.10.2013 19:46:00-11.10.2013 20:46:00 bzAllesAus
oqiblql0l3901tmidia0etnj1cgooglecom known start 11.10.2013 19:55:00-11.10.2013 20:15:00 weihAllesAus
Den mit get MyCalendar full all zeigt er ja beide Einträge richtig an und das diese gestartet sind.
wenn Dein Kalender "MyCalendar" heißt, macht es wenig Sinn, im notify nach "Kalender_Schalter" auszuwerten...
Kalender habe ich nun umbenannt zu Kalender_Schalter.
rename MyCalendar Kalender_Schalter
Notify habe ich auch nochmals beide neu erstellt.
SIEHE DA. Es funktioniert.
Vielen Dank an betateilchen
Abgesehen davon, dass Du mit Deinem define Befehl überhaupt kein notify anlegen kannst - warum um alles in der Welt willst Du das tun? Die notify existieren doch schon?
Die 99_myUtils wird automatisch beim Starten von fhem geladen, weil sie mit 99 anfängt.
Irgendwas war mit den Notify noch nicht gut, aber hat sich alles erledigt. Funktioniert super.
Nur eine Frage noch an den Spezialisten.
Nun kann ich die Lampe wzStehlampe über den Kalender schalten.
Kann ich auch so etwas in der Art im Kalender eintragen damit der Dimmer noch gesteuert wird?
wzStehlampe dim68% oder wzStehlampe dim68%%
Die beiden Beispiele hatten nicht funktioniert
Das geht prinzipiell auch, nur musst Du schauen, wie Du mit dem Prozentzeichen klarkommst. Entweder Du schreibst den Dimmer-Wert in den "Ort" im Kalender und wertest in der Funktion noch das Feld "location" aus, oder Du schreibst <dimmerAktor> und <dimmerSollwert> zusammen in den Betreff und splittest das innerhalb der Funktionen in der 99_myUtils in zwei Felder auf, in actor und value.
Ich hab das neulich hier im Forum für die Heizungssteuerung beschrieben, wo ich einen Anfangswert und einen Endwert gemeinsam übergebe, musst mal den Beitrag suchen, ist noch nicht lange her.
Hallo,
ich muss mich leider als nicht fähig outen den Google-Kalender in Betrieb zu nehmen und hoffe auf eure Hilfe.
Definiert habe ich den Kalender und er funktioniert so weit auch aber ich bekomme kein modeStarted geliefert sondern nur ein modeUpcoming resp. den all-Eintrag und mode-Upcoming.
Aber eben kein modeStarted (regExp vom notify).
Kontrolliert habe ich das ganze bisher so:
ZitatGoogle_Kalender:.*googlecom.* {
Goggle_Kalender ist logischerweise mein Kalender - dieser wird im calname auch richtig erkannt als FHEM (so heisst mein Kalender auch).
Und im regexp prüfe ich erstmal nur auf irgendwas mit gogglecom
Im Log habe ich
Was mache ich im Kalender falsch?
Die Einstellungen habe ich schon mit den Screnshots hier kontrolliert aber ich finde keinen Unterschied.
Bin mal wieder für jeden Tipp dankbar.
Grüße
P.S.: Ich gewöhne mich noch an die neue Umgebung daher das durcheinander mit den Screenshots - sorry.
Hi zusammen,
ich lese mir die Sache schon eine ganze Weile durch und mit dem Kalender finde ich die Sache richtig gut.
Habe dann die 99_myUtils.pm angelegt und den Code reingesetzt:
in der CFG steht folgendes:
define Kalender_Schalter Calendar ical url https://www.google.com/calendar/ical/gXXXXXXXXXXXXXX%40group.calendar.google.com/private-XXXXXXXXXXXXXXX/basic.ics 3600
der Kalender ist Active und wird auch ausgelesen
Jedoch werden mir die Notify nicht angezeigt!
Was kann das sein,
Im Log finde ich auch nichts dazu, nochnicht mal das die 99_myUtils.pm geladen wird.
GRuss Dirk
Zitat von: hyper2910 am 30 Januar 2014, 09:57:41Habe dann die 99_myUtils.pm angelegt und den Code reingesetzt:
Jedoch werden mir die Notify nicht angezeigt!
Welchen Code hast Du wo reingesetzt?
Wo möchtest Du die notify sehen?
Hast Du die 99_myUtils nach dem Ändern auch neu geladen?
Hi,
habe die 99_myUtils neu geladen und auch den kompletten Server Neugestartet.
Hier wollte ich das eigentlich sehen`!
(//)
wo hast Du die notify angelegt?
Sorry, habe es, irgendwie wurde die CFG nicht gespeichert!
Hallo,
Zitatirgendwie wurde die CFG nicht gespeichert!
Eigenartig.
Ich weiss eigentlich immer warum nicht gespeichert wurde bzw. warum die Einträge nicht dort stehen wo sie sollen.
Entweder kein <save fhem.cfg> eingegeben oder nicht auf <save Konfig> geklickt würde ich mal durch meine Glaskugel vermuten.
Grüsse
UPDATE der Codeschnipsel:
calSchalterStart ($)
{
my ($Ereignis) = @_;
my @Ereignisarray = split(/.*:\s/,$Ereignis);
my $Ereignisteil1 = $Ereignisarray[1];
my @uids=split(/;/,$Ereignisteil1);
foreach my $uid (@uids) {
my $actor = fhem("get Kalender_Schalter summary $uid 1");
fhem("set $actor on");
};
}
sub
calSchalterEnde ($) {
my ($Ereignis) = @_;
my @Ereignisarray = split(/.*:\s/,$Ereignis);
my $Ereignisteil1 = $Ereignisarray[1];
my @uids=split(/;/,$Ereignisteil1);
foreach my $uid (@uids) {
my $actor = fhem("get Kalender_Schalter summary $uid 1");
fhem("set $actor off");
};
} 1;
define Kalender_Schalter_An notify Kalender_Schalter:start:.* { calSchalterStart("$EVENT") }
define Kalender_Schalter_Aus notify Kalender_Schalter:end:.* { calSchalterEnde("$EVENT") }