Hallo Com,
ich bräuchte mal eure Hilfe. Ich habe mir ein Calender Device angelegt, wie HIER (https://wiki.fhem.de/wiki/Wochenende,_Feiertage_und_Schulferien) beschrieben. Das scheint auch soweit zu funktionieren.
Bild_2024-05-19_110837995.png
Wie bekomme ich nun ASC dazu, diese Infos zu nutzen, damit die Rollos in den Ferien später fahren. Es muss in FHEM ja jetzt irgendwas auf isWE oder holiday2we gesetzt werden, damit ASC das so erkennt. Hier bin ich raus, ich bekomme da nofiy im Dummy nicht angelegt und weiß nicht wie ich das nun so nutzen kann.
Hier bräuchte ich eure Hilfe, damit ich das hinbekomme. Man müsste mich hier ab diesem Punkt an die Hand nehmen und mit mir zusammen das einrichten.
Grüße,
Deltoro
Wäre es nicht einfacher, das über ein holiday-device zu lösen anstatt per Calendar?
Sowas hier ?
Bild_2024-05-19_121359717.png
Das müsste ich ja immer von Hand alles eintragen ? Ich hab das mal gemacht, aber bekomme kein Event.
Zitat# $Id: bw.holiday 22661 2020-08-24 12:56:10Z betateilchen $
# Feiertage in Baden-Württemberg
# Siehe auch
# http://de.wikipedia.org/wiki/Feiertage_in_Deutschland
1 01-01 Neujahr
1 01-06 Heilige Drei Könige
1 05-01 Tag der Arbeit
1 10-03 Tag der Deutschen Einheit
1 11-01 Allerheiligen
1 12-25 1. Weihnachtstag
1 12-26 2. Weihnachtstag
2 -2 Karfreitag
2 1 Ostermontag
2 39 Christi Himmelfahrt
2 50 Pfingstmontag
2 60 Fronleichnam
4 05-21 05-31 Pfingstferien
4 07-25 09-07 Sommerferien
4 10-28 10-31 Herbstferien
#4 12-23 12-31 Weihnachtsferien
#4 01-01 04-04 Weihnachtsferien
Bild_2024-05-19_121540016.png
Der Pflegeaufwand reduziert sich auf einmal pro Jahr. Und zumindest Dein im ersten Beitrag geäußerter Wunsch nach "holiday2we" sollte damit ja erfüllbar sein.
https://forum.fhem.de/index.php?topic=127782.0
Aber ich scheine dann hier etwas falsch zu machen ? Müsste da nicht was stehen, anstatt "none" Genau so unten ? Today, Tomorrow und Yesterday. Müsste da nicht Pfingstferien stehen ?
Hab ich das falsch eingetragen in die Datei ?
Das ist ja mein Thread CoolTux, aber ich raf es immer noch nicht. Hätte schon gern das über Calendar gemacht. Dort ist auch ein Beispiel, aber ka wie ich das zusätzliche erstelle und wo.
ZitatAber ich scheine dann hier etwas falsch zu machen ? Müsste da nicht was stehen, anstatt "none" Genau so unten ? Today, Tomorrow und Yesterday. Müsste da nicht Pfingstferien stehen ?
Hallo,
so hast Du das doch aber gar nicht in der holiday-Datei eingetragen? Pfingstferien beginnen bei Dir übermorgen.
Gruß
Thomas
Zitat von: TomLee am 19 Mai 2024, 13:05:28ZitatAber ich scheine dann hier etwas falsch zu machen ? Müsste da nicht was stehen, anstatt "none" Genau so unten ? Today, Tomorrow und Yesterday. Müsste da nicht Pfingstferien stehen ?
Hallo,
so hast Du das doch aber gar nicht in der holiday-Datei eingetragen? Pfingstferien beginnen bei Dir übermorgen.
Gruß
Thomas
Bester Mann ;D Stimmt, die fangen ja erst Dienstag nach dem Feiertag an. Am WE und am Feiertag ist ja eh "isWE" gesetzt und ich habe Dienstag eingetragen. Dann stimmt es wahrscheinlich doch und klappt dann auch. Werde ich morgen schauen... Danke dir...
Aber automatisch über Calendar wäre schon schön gewesen.
Wo oder wie muss ich das eintragen ? So sollte er mir ja die Datei automatisch vom Calender befüllen.
sub myCalendar2Holiday {
my $calname = shift // return;
my $regexp = shift // return;
my $targetname = shift // $calname;
my $field = shift // "summary";
my $limit = shift // 10;
my $from = shift // q{-10d};
my $to = shift // q{100d};
my ($sec,$min,$hour,$mday,$month,$year,$wday,$yday,$isdst) = localtime(gettimeofday());
my $getstring = $calname . ' events format:custom="4 $T1 $t2 $S ($D)" timeFormat:"%Y-%m-%d" limit:count=' . "${limit},from=${from},to=$to filter:field($field)=~\"$regexp\"";
my @holidaysraw = split m{\n}xms, CommandGet( undef, $getstring );
my @holidays;
my @singledays;
for my $holiday (@holidaysraw) {
my @tokens = split (" ",$holiday);
my $endsecond = $tokens[2]-1;
my @end_arr = localtime($endsecond);
$tokens[2] = strftime "%Y-%m-%d", localtime($endsecond);
my $severalDays = $tokens[2] eq $tokens[1] ? 0 : 1;
$holiday = join(' ', @tokens);
if (!$severalDays) {
$tokens[0] = 1;
splice @tokens, 2, 1;
$holiday = join(' ', @tokens);
push (@singledays, $holiday);
} else {
push (@holidays, $holiday);
}
}
push @holidays, @singledays;
unshift (@holidays, "# get $getstring");
my $today = strftime "%d.%m.%y, %H:%M", localtime(time);
unshift (@holidays, "# Created by myCalendar2Holiday on $today");
FileWrite("./FHEM/${targetname}.holiday",@holidays);
}
ZitatWo oder wie muss ich das eintragen ? So sollte er mir ja die Datei automatisch vom Calender befüllen.
Da keiner antwortet, ich verstehe die Frage nicht !
Du weißt nicht wie man diese Funktion mit Parametern aufruft ?
Oder du weißt nicht wo man die Funktion hinterlegt ?
Oder beides ?
Zitat von: TomLee am 19 Mai 2024, 14:18:30ZitatWo oder wie muss ich das eintragen ? So sollte er mir ja die Datei automatisch vom Calender befüllen.
Da keiner antwortet, ich verstehe die Frage nicht !
Du weißt nicht wie man diese Funktion mit Parametern aufruft ?
Oder du weißt nicht wo man die Funktion hinterlegt ?
Oder beides ?
Beides :-)
Wenn Du bisher noch gar keine 99_myUtils.pm hast, musst zuerst eine erstellen, um die Funktion nutzen zu können.
Les dich hier mal ein: https://wiki.fhem.de/wiki/99_myUtils_anlegen
Wenn Du nicht weiter kommen solltest, frag einfach.
Zitat von: TomLee am 19 Mai 2024, 15:02:15Wenn Du bisher noch gar keine 99_myUtils.pm hast, musst zuerst eine erstellen, um die Funktion nutzen zu können.
Les dich hier mal ein: https://wiki.fhem.de/wiki/99_myUtils_anlegen
Wenn Du nicht weiter kommen solltest, frag einfach.
##############################################
# $Id: myUtilsTemplate.pm 7570 2015-01-14 18:31:44Z rudolfkoenig $
#
# Save this file as 99_myUtils.pm, and create your own functions in the new
# file. They are then available in every Perl expression.
package main;
use strict;
use warnings;
use POSIX;
sub
myUtils_Initialize($$)
{
my ($hash) = @_;
}
# Enter you functions below _this_ line.
1;
Das steht hier drin, hatte die schon.
Dort kopiere ich einfach den Code von oben rein ?
ZitatDort kopiere ich einfach den Code von oben rein ?
Ja.
Nein. Hast du nicht das Wiki gelesen ?Denkfehler von mir, hast Du die Datei auch als 99_myUtils.pm gespeichert ?
Was steht im Logfile nachdem du ein
"ls -l ./FHEM/*myUtils.pm"
in der Befehlszeile ausführst ?
Danach kannst in der Befehlszeile oben in FHEM dann so testen:
{myCalendar2Holiday("BW_Ferien","Pfingstferien")}
In opt/fhem/FHEM sollte dann eine BW_Ferien.holiday zu finden sein.
Achte darauf, wie die ...Utils... Datei wirklich heißt. Du solltest nicht das template bearbeiten und unter dem gleichen Namen wieder abspeichern.
Zitat von: TomLee am 19 Mai 2024, 17:31:28ZitatDort kopiere ich einfach den Code von oben rein ?
Ja.
Nein. Hast du nicht das Wiki gelesen ?
Denkfehler von mir, hast Du die Datei auch als 99_myUtils.pm gespeichert ?
Was steht im Logfile nachdem du ein
"ls -l ./FHEM/*myUtils.pm"
in der Befehlszeile ausführst ?
Danach kannst in der Befehlszeile oben in FHEM dann so testen:
{myCalendar2Holiday("BW_Ferien","Pfingstferien")}
In opt/fhem/FHEM sollte dann eine BW_Ferien.holiday zu finden sein.
-rw-rw-r-- 1 fhem dialout 401 21. Aug 2019 ./FHEM/99_myUtils.pm
In der Log, nach dem Befehl !
Die Datei war schon vorhanden, die muss ich früher mal angelegt haben.
Ok. Passt ja dann.
Wo drückt nun der Schuh ?
Hast du die Funktion in der Datei ergänzt und sie mal mit meinem gezeigten Beispiel für die Befehlszeile aufgerufen ?
Wird die BW_Ferien.holiday erstellt ?
Dein Calendar-Device heißt doch BW_Ferien ?
Warum kommt dazu keine Rückmeldung ?
Zitat von: TomLee am 19 Mai 2024, 17:31:28ZitatDort kopiere ich einfach den Code von oben rein ?
Ja.
Nein. Hast du nicht das Wiki gelesen ?
Denkfehler von mir, hast Du die Datei auch als 99_myUtils.pm gespeichert ?
Was steht im Logfile nachdem du ein
"ls -l ./FHEM/*myUtils.pm"
in der Befehlszeile ausführst ?
Danach kannst in der Befehlszeile oben in FHEM dann so testen:
{myCalendar2Holiday("BW_Ferien","Pfingstferien")}
In opt/fhem/FHEM sollte dann eine BW_Ferien.holiday zu finden sein.
Genau, so gemacht wie du geschrieben hast. Datei wurde erstellt und folgendes steht drin.
# Created by myCalendar2Holiday on 22.05.24, 18:52
# get BW_Ferien events format:custom="4 $T1 $t2 $S ($D)" timeFormat:"%Y-%m-%d" limit:count=10,from=-10d,to=100d filter:field(summary)=~"Pfingstferien"
4 2024-05-21 2024-05-31 Pfingstferien (11d)
Indem Fall soweit erst mal funktionsfähig richtig ? Reagiert denn FHEM jetzt auf die BW.Ferien.holiday Datei ? Oder muss ich da noch irgendwo was machen ? Muss ich das jetzt jedes mal von Hand ausführen, damit dort was hinein geschrieben wird ?
Jetzt sollte er aber alle Ferien finden, die der Calender hat, dann müsste ich beim Summary was ändern, nur was mit Ferien oder so ähnlich. Des weiteren würde ich das gerne in die bw.holiday schreiben lassen, da ich diese schon habe und auch als Device funktioniert.
ZitatIndem Fall soweit erst mal funktionsfähig richtig ?
Ja.
ZitatReagiert denn FHEM jetzt auf die BW.Ferien.holiday Datei ?
Hab deine Beiträge nur überflogen (und nur darum kann ich dir jetzt antworten), du machst doch jetzt schon Jahre deswegen rum ?
Ist dir nicht in Erinnerung das im
global-Device im Attribut
holiday2we diese holiday-Definition jetzt ergänzt gehört ?
Dann sollte mit ASC alles passen ?
Hab ich bis jetzt so verstanden, genutzt hab ich das bisher noch nie.
ZitatMuss ich das jetzt jedes mal von Hand ausführen, damit dort was hinein geschrieben wird ?
Wie oft änderst Du denn was am Kalender ?
Man könnte die Funktion mit einer at-Defintion in regelmäßigen aufrufen ?
ZitatJetzt sollte er aber alle Ferien finden, die der Calender hat, dann müsste ich beim Summary was ändern, nur was mit Ferien oder so ähnlich. Des weiteren würde ich das gerne in die bw.holiday schreiben lassen, da ich diese schon habe und auch als Device funktioniert.
Da weiß ich gerade nicht
was und
wo ich dazu was sagen soll, hab mich mit dem Thema nie tiefer beschäftigt, da muss
ich noch
einige Tage drüber schlafen.
ZitatDes weiteren würde ich das gerne in die bw.holiday schreiben lassen, da ich diese schon habe und auch als Device funktioniert.
Hallo,
zwei eine Frage
n dazu. Pflegst du in deiner bw.holiday weitere Termine oder hat die einfach nur den Inhalt wie sie FHEM bereitstellt ?
Und warum die Feiertage nicht gleich im Kalender eintragen ?
Zitat von: TomLee am 26 Mai 2024, 14:03:08ZitatDes weiteren würde ich das gerne in die bw.holiday schreiben lassen, da ich diese schon habe und auch als Device funktioniert.
Hallo,
zwei eine Fragen dazu. Pflegst du in deiner bw.holiday weitere Termine oder hat die einfach nur den Inhalt wie sie FHEM bereitstellt ?
Und warum die Feiertage nicht gleich im Kalender eintragen ?
Also ich habe die genutzt um händisch dort die Ferien ein zu tragen. Dann klappt es auch. Mit der anderen hab ich es noch nicht versucht. Hätte halt gern, das er jetzt die Daten aus dem Kalender nun mit in die bw.holiday einträgt. Aber das raff ich nicht.
Naja, wenn ich das Calendar Device nutze, kann ASC damit nichts anfangen, oder das System an sich. Damit reagiert isWE nicht.
ZitatNaja, wenn ich das Calendar Device nutze, kann ASC damit nichts anfangen, oder das System an sich. Damit reagiert isWE nicht.
Mit der BW.Ferien.holiday-Datei i.V.m. einer holiday-Definition die in dem Attribut holiday2we eingetragen ist, sollte das doch jetzt klappen ? ? ?
ZitatHätte halt gern, das er jetzt die Daten aus dem Kalender nun mit in die bw.holiday einträgt.
Dazu hab ich (Programmierlaie) mir was überlegt.
Wenn Du die Funktion wie unten rot hervorgehoben anpasst und im dritten Parameter des Funktionsaufruf von myCalendar2Holiday einen Namen einträgst der den Namen einer der mit FHEM ausgelieferten holiday-Dateien matcht, bspw.
{myCalendar2Holiday("BW_Ferien","Pfingstferien","bw")}
dann werden die Daten aus dem Kalender und aus der /opt/fhem/FHEM/holiday/bw.holiday nach /opt/fhem/FHEM/bw.holiday geschrieben. Sonst verhält sich die Funktion wie immer (hoff ich ;D ).
Damit hättest meinem Verständnis nach deine automatisierte Ergänzung der bw.holiday. Händisch ergänzen in der Datei ist dann aber nicht mehr, der Inhalt ist beim nächsten Aufruf der Funktion mit drittem Parameter der matcht weg.
Ein erfahrener (FHEM)-Programmierer mag das anders lösen (Pfadangaben wurden schon kritisiert), es tut aber zumindest so wie ich es mir vorgestellt hatte und soll nur
einen von vielen Lösungswegen darstellen:
Zitatsub myCalendar2Holiday {
my $calname = shift // return;
my $regexp = shift // return;
my $targetname = shift // $calname;
my $field = shift // "summary";
my $limit = shift // 10;
my $from = shift // q{-10d};
my $to = shift // q{100d};
my ($sec,$min,$hour,$mday,$month,$year,$wday,$yday,$isdst) = localtime(gettimeofday());
my $getstring = $calname . ' events format:custom="4 $T1 $t2 $S ($D)" timeFormat:"%Y-%m-%d" limit:count=' . "${limit},from=${from},to=$to filter:field($field)=~\"$regexp\"";
my @holidaysraw = split m{\n}xms, CommandGet( undef, $getstring );
my @holidays;
my @singledays;
for my $holiday (@holidaysraw) {
my @tokens = split (" ",$holiday);
my $endsecond = $tokens[2]-1;
my @end_arr = localtime($endsecond);
$tokens[2] = strftime "%Y-%m-%d", localtime($endsecond);
my $severalDays = $tokens[2] eq $tokens[1] ? 0 : 1;
$holiday = join(' ', @tokens);
if (!$severalDays) {
$tokens
splice @tokens, 2, 1;
$holiday = join(' ', @tokens);
push (@singledays, $holiday);
} else {
push (@holidays, $holiday);
}
}
push @holidays, @singledays;
unshift (@holidays, "# get $getstring");
my $today = strftime "%d.%m.%y, %H:%M", localtime(time);
unshift (@holidays, "# Created by myCalendar2Holiday on $today");
my @hfn = glob("/opt/fhem/FHEM/holiday/*.holiday");
my @mhfn = map { substr($_, 23) } @hfn;
for my $mtn (@mhfn) {
if ($mtn =~ /$targetname\.holiday/) {
my ($error, @content) = FileRead("./FHEM/holiday/$mtn");
push @holidays, @content;
FileWrite("./FHEM/${targetname}.holiday",@holidays);
}
else
{
FileWrite("./FHEM/${targetname}.holiday",@holidays);
}
}
Zitat von: D3ltorohd am 26 Mai 2024, 14:58:13Hätte halt gern, das er jetzt die Daten aus dem Kalender nun mit in die bw.holiday (https://bw.holiday/) einträgt. Aber das raff ich nicht.
Das macht es m.E. auch schlichtweg schwieriger!
Was ist das eigentliche Problem mit einem weiteren holiday-Device für diesen Zweck? Oder alternativ, falls auch die "anderen" Daten aus demselben Calendar-Device kommen könnten: Die regex einfach anpassen, dass alle betreffenden Infos extrahiert werden? Kannst ja "ferien" mit "Urlaub" ergänzen oä.....
was ist damit?
ASC_Time_Up_WE_Holiday - Sonnenaufgang frühste Zeit zum Hochfahren am Wochenende und/oder Urlaub (holiday2we wird beachtet). (default: 08:00) ACHTUNG!!! in Verbindung mit Brightness für ASC_Up muss die Uhrzeit kleiner sein wie die Uhrzeit aus ASC_Time_Up_Late !!!Verwendung von Perlcode ist möglich, dieser muss in {} eingeschlossen sein. Rückgabewert muss ein Zeitformat in Form HH:MM[:SS] sein!!!
Also ich werd jetzt einfach die Datei erstellen lassen und füge die noch mal als Holiday mit dazu. Nur hab ich grad ein Problem. Wenn ich den Command fürs Erstellen eintippe, steht folgendes in der erstellten Datei.
GNU nano 7.2 Schulferien.holiday
# Created by myCalendar2Holiday on 29.05.24, 19:21
# get Schulferien events format:custom="4 $T1 $t2 $S ($D)" timeFormat:"%Y-%m-%d" limit:count=10,from=-10d,to=100d filter:field(summary)=~"ferien"
Please define 1970-01-01 first
Das steht in der utils drin.
##############################################
# $Id: myUtilsTemplate.pm 7570 2015-01-14 18:31:44Z rudolfkoenig $
#
# Save this file as 99_myUtils.pm, and create your own functions in the new
# file. They are then available in every Perl expression.
package main;
use strict;
use warnings;
use POSIX;
sub
myUtils_Initialize($$)
{
my ($hash) = @_;
}
# Enter you functions below _this_ line.
sub myCalendar2Holiday {
my $calname = shift // return;
my $regexp = shift // return;
my $targetname = shift // $calname;
my $field = shift // "summary";
my $limit = shift // 10;
my $from = shift // q{-10d};
my $to = shift // q{150d};
my ($sec,$min,$hour,$mday,$month,$year,$wday,$yday,$isdst) = localtime(gettimeofday());
my $getstring = $calname . ' events format:custom="4 $T1 $t2 $S ($D)" timeFormat:"%Y-%m-%d" limit:count=' . "${limit},from=${from},to=$to filter:field($field)=~\"$regexp\"";
my @holidaysraw = split m{\n}xms, CommandGet( undef, $getstring );
my @holidays;
my @singledays;
for my $holiday (@holidaysraw) {
my @tokens = split (" ",$holiday);
my $endsecond = $tokens[2]-1;
my @end_arr = localtime($endsecond);
$tokens[2] = strftime "%Y-%m-%d", localtime($endsecond);
my $severalDays = $tokens[2] eq $tokens[1] ? 0 : 1;
$holiday = join(' ', @tokens);
if (!$severalDays) {
$tokens[0] = 1;
splice @tokens, 2, 1;
$holiday = join(' ', @tokens);
push (@singledays, $holiday);
} else {
push (@holidays, $holiday);
}
}
push @holidays, @singledays;
unshift (@holidays, "# get $getstring");
my $today = strftime "%d.%m.%y, %H:%M", localtime(time);
unshift (@holidays, "# Created by myCalendar2Holiday on $today");
FileWrite("./FHEM/holiday/${targetname}.holiday",@holidays);
}
1;
Als Command gebe ich
{myCalendar2Holiday("Schulferien","ferien")}
Sollte doch die vorhandene Datei einfach überschreiben oder ?
Dein neuer Calendar heißt "Schulferien"?
Das sollte die neue Holiday Datei werden. Schulferien.holiday. Mein Calendar heißt nach wie vor BW_Ferien.
EDIT:
Jetzt hab ichs verstanden. Ich wollte immer eine Datei mit Namens Schulferien.holiday. Damit ich daraus ein Holiday Device machen kann. Denn wenn ich define BW_Ferien holiday mache, motzt FHEM das es das schon gibt. Es gibt aber nur meinen Calendar mit diesem Name.
Ich hab jetzt in der Utils ${targetname} rausgelöscht und Schulferien geschrieben. In dem Command muss ja der Calendar mit angegeben werden und so wird auch die Datei erstellt.
Jetzt scheint es zu klappen so wie ich das will. Muss nur noch das Holiday Device erstellen.
Zitat von: D3ltorohd am 29 Mai 2024, 19:51:02Das sollte die neue Holiday Datei werden. Schulferien.holiday. Mein Calendar heißt nach wie vor BW_Ferien.
...dann solltest du deinen Funktionsaufruf entsprechend anpassen, ist doch logisch, oder?
Vor lauter hin und her, total durcheinander gekommen. Er braucht ja dort nen Calendar den es gibt um dort zu schauen.
So sieht nun mein Holiday Device aus.
Bild_2024-05-29_195758631.png
Das muss noch ins global oder ? Aber wie setze ich das da mit rein ?
Kann ich irgendwo testen ob jetzt isWE gesetzt ist ?
Total neu: Screenshots sind unerwünscht....
Und wie viele Attribute hat global?
Die Hilfe zu isWe() dürfte in der commandref zu finden sein.
Zitat von: Beta-User am 29 Mai 2024, 20:33:21Und wie viele Attribute hat global?
Wie meinst du das ? Ich hab hier von FHEM absolut keine Ahnung und ich komm auch irgendwie gar nicht klar mit dem FHEM. Tu mir da total schwer.
Auf jeden Fall hab ich jetzt mal das Holiday Device und den Command das er dort die Ferien aus dem calendar rein schreibt. Den Command sende ich jetzt per ioBroker zu fhem, dann klappt das auch schon mal.
Das (11d) hinter Pfingstferien stört nicht ?
Zitat von: D3ltorohd am 29 Mai 2024, 20:52:25Wie meinst du das ? Ich hab hier von FHEM absolut keine Ahnung und ich komm auch irgendwie gar nicht klar mit dem FHEM. Tu mir da total schwer.
Das Forum hier ist nach meinem Verständnis dazu da, "Hilfe zur Selbsthilfe" zu ermöglichen. Du wirst mit FHEM nicht glücklich werden, wenn du dich nicht intensiver einarbeitest...
Das war so gemeint: Schau nach, welche Attribute das Device "global" überhaupt kennt (und lass' dir die commandref dazu anzeigen).
Zitat von: D3ltorohd am 29 Mai 2024, 19:51:02Ich hab jetzt in der Utils ${targetname} rausgelöscht und Schulferien geschrieben. In dem Command muss ja der Calendar mit angegeben werden und so wird auch die Datei erstellt.
Nur für Nachahmer: Die korrekte Lösung wäre gewesen, den Code unverändert zu lassen, und den Namen im Funktionsaufruf als 3. Argument zu übergeben! Diese "shift"-Anweisungs-Liste am Anfang übergibt die Argumente aus dem Funktionsaufruf an die einzelnen Variablen...
Zitat von: D3ltorohd am 29 Mai 2024, 20:52:25Den Command sende ich jetzt per ioBroker zu fhem, dann klappt das auch schon mal.
Das weckt bei mir schlimme Befürchtungen! Falls (?!?) du mit dem "pauschalen notify" arbeitest, dass alle String-Payloads eines bestimmten MQTT-Topics in einen FHEM-Befehl umdeutet, schick bitte mal "delete (?!global)" dahin (am besten noch gefolgt von einer save-Anweisung)... Dazu noch das "use POSIX;", das danach klingt, als wäre deine FHEM-Installation seit mindestens 3 Jahren nicht mehr mit updates versorgt worden. *Grusel*
Nochmal: Verzichte auf copy-paste-Lösungen von "irgendwoher" und arbeite dich ein, oder lass' die Finger von FHEM. tertium non datur.
Hab erst vor kurzem update FHEM ausgeführt. Für die Kommunikation über ioB nutze ich dort einen Adapter, der mir unter anderem den Command DP zur Verfügung stellt. Das ist dann das gleiche wie wenn ich auf der FHEM Oberfläche den Befehl oben in der Zeile eintrage.
OK, klingt zwar immer noch nach einem Sicherheitsloch (deaktivierter csrfToken?)...
Und zur Sicherheit: das update ist auch sauber und ohne Fehler durchgelaufen? (Die Musterdatei enthälft "schon ewig" dieses use nicht mehr).
(Würde trotzdem das updaten der .holiday schlicht einem at in FHEM überlassen.)
Ich reiche FHEM ja auch Sensoren von ioB durch. Das ganze geht durch Telnet.
Na ja, afair ist der telnet-Port zwischenzeitlich auch nicht mehr per defaut aktiv. Aber jeder wie er kann und mag.
Da ioBroker - jedenfalls in meiner Erinnerung - MQTT-basiert arbeitet, wäre es vermutlich für Sensoren der einfachere Weg, schlicht denselben MQTT-Server anzuzapfen. Aber das wäre eine andere Baustelle.
Also mit der neuen Holiday Datei ging es nicht, die Rollos fuhren früh hoch.
# Created by myCalendar2Holiday on 29.05.24, 20:24
# get BW_Ferien events format:custom="4 $T1 $t2 $S ($D)" timeFormat:"%Y-%m-%d" limit:count=10,from=-10d,to=150d filter:field(summary)=~"ferien"
4 2024-05-21 2024-05-31 Pfingstferien (11d)
4 2024-07-25 2024-09-07 Sommerferien (45d)
So stehts drin. Hat er da mit dem Format ein Problem ?
list global?
Internals:
DEF no definition
FD 3
NAME global
NR 1
STATE no definition
TYPE Global
currentlogfile ./log/fhem-2024-06.log
eventCount 210
init_errors Messages collected while initializing FHEM:SecurityCheck:
WEB is not password protected
Protect this FHEM installation by configuring the allowed device allowed_telnetPort
You can disable this message with attr global motd none
logfile ./log/fhem-%Y-%m.log
Attributes:
alias global
autoload_undefined_devices 1
autosave 0
configfile fhem.cfg
holiday2we bw,bw_Schulferien
latitude 48.0287
logfile ./log/fhem-%Y-%m.log
longitude 9.2955
modpath .
motd SecurityCheck:
WEB is not password protected
Protect this FHEM installation by configuring the allowed device allowed_telnetPort
You can disable this message with attr global motd none
statefile ./log/fhem.save
userattr ASC:0,1,2 cmdIcon devStateIcon:textField-long devStateStyle icon sortby webCmd webCmdLabel:textField-long widgetOverride
verbose 3
version fhem.pl:28849/2024-05-07
Neulich hättest du den code angefaßt, damit es "Schulferien.holiday" ergibt. Das steht aber nicht im Attribut von global...
Ich hab immer noch keine Ahnung wie ich das da rein bekomme, ich weiß auch ehrlicherweise nicht, wie bw_Schulferien dort rein kam :o
defmod bw holiday
attr bw room Ferien Feiertage
setstate bw none
setstate bw 2024-06-02 00:00:02 state none
setstate bw 2024-06-02 00:00:02 today none
setstate bw 2024-06-02 00:00:02 tomorrow none
setstate bw 2024-06-02 00:00:02 yesterday none
bw steht ja mit im global. Aber in bw sehe ich nicht, wie man das hinzugefügt hat.
EDIT.
Sollte das so jetzt stimmen ?
Attributes:
alias global
autoload_undefined_devices 1
autosave 0
configfile fhem.cfg
holiday2we bw,Schulferien
latitude 48.0287
logfile ./log/fhem-%Y-%m.log
longitude 9.2955
modpath .
motd SecurityCheck:
WEB is not password protected
hab jetzt in die Command Leiste folgendes eingegeben.
attr global holiday2we bw,Schulferien