Hallo an alle,
es treibt mich zum Wahnsinn!
Mein Befehl um die Rolladen automatisch runter zu fahren (wenn sie nicht vorher auf eine andere Position gefahren sind) funktioniert
defmod RolladenRunter_Test at *20:00:00 \
{ if (ReadingsVal("Shelly25.SZ_Rechts","pct",0) eq 100) \
{ fhem("set Shelly25.SZ_Rechts pct 5")} \
}\
Damit war ich glücklich.
Aber danach dachte ich, ich mache es noch besser: Die Rolladen sollten erst beim Sonnenuntergang runter gefahren werden!
es gibt ja das sunset(0,"17:00","23:00")
Und jetzt verstehe ich nicht, warum mein Befehl
defmod RolladenRunter_Test at *{sunset(0,"17:00","23:00")} \
{ if (ReadingsVal("Shelly25.SZ_Rechts","pct",0) eq 100) \
{ fhem("set Shelly25.SZ_Rechts pct 5")} \
}\
und...... dieser Befehl funktioniert nicht! >:(
Kann vielleicht irgendjemand erkennen, welche Dummheit ich getippt habe?
Schöne Grüße
Manos
LOESUNG: Alles auf eine Linie und es funktioniert!
defmod RolladenRunter_Rechts_SZ at *{sunset(0,"17:00","23:00")} { if (ReadingsVal("Shelly25.SZ_Rechts","pct",0) eq 100) { fhem("set Shelly25.SZ_Rechts pct 5")} }
Danke Otto123, du hast Recht gehabt :)
Hi Manos,
der letzte backslash ist in beiden Definitionen sinnlos/bis schädlich - ansonsten ist alles schick.
Was funktioniert denn nicht?
Wie sieht ein list RolladenRunter_Test aus?
Gruß Otto
Hi Otto,
wenn ich *{sunset(0,"17:00","23:00")} (anstatt eine feste Uhrzeit) benutze:
TRIGGERTIME wird correct identifiziert, aber wenn die Zeit kommt, passiert nichts.
Der IF Befehl ist richtig (er funktioniert ja wenn ich eine feste Uhrzeit eingebe).
Daraufhin gehe ich davon aus, der Satz *{sunset(0,"17:00","23:00")} passt irgendwie
mit dem Restlichen { if ................ } zusammen.
Unterschied:
- Feste Uhrzeit ist FHEM
- {sunset(0,"17:00","23:00")} ist PERL
Vielleicht passt irgendetwas in meiner Syntax nicht, ich finde aber nirgendwo etwas was mir helfen koennte.
Internals:
COMMAND { if (ReadingsVal("Shelly25.SZ_Rechts","pct",0) eq 100)
{ fhem("set Shelly25.SZ_Rechts pct 5")}
}
DEF *{sunset(0,"17:00","23:00")}
{ if (ReadingsVal("Shelly25.SZ_Rechts","pct",0) eq 100)
{ fhem("set Shelly25.SZ_Rechts pct 5")}
}
FVERSION 90_at.pm:0.241290/2021-04-02
NAME RolladenRunter_Test
NR 447
NTM 20:55:04
PERIODIC yes
RELATIVE no
REP -1
STATE Next: 20:55:04
TIMESPEC {sunset(0,"17:00","23:00")}
TRIGGERTIME 1630349704
TRIGGERTIME_FMT 2021-08-30 20:55:04
TYPE at
Helper:
DBLOG:
state:
Logdb:
TIME 1630276435.29506
VALUE Next: 20:55:04
READINGS:
2021-08-30 00:33:55 state Next: 20:55:04
Attributes:
Dein Vergleich ist falsch. Du möchtest numerisch vergleichen.
Also muss es heißen
if (ReadingsNum("Shelly25.SZ_Rechts","pct",0) == 100)
Was ergibt denn die Eingabe von
{sunset(0,"17:00","23:00")}
in der Kommandzeile? Bei mir sind das für heute "20:59:29".
Dumme Frage noch zur Sicherheit:
Sind die Werte für die geographische Lage gesetzt?
Als Beispiel aus dem wiki:
attr global latitude 52.51626
attr global longitude 13.37778
Edit:
Der Befehl zum Schließen wird bei Deinem Vergleich nur ausgeführt, wenn das Reading den Wert 100 hat.
Ggf. wäre es sinnvoller hier auf z.B. >= 90 zu vergleichen.
Moin,
also zunächst mal mit der Zeit ist alles richtig: TRIGGERTIME_FMT 2021-08-30 20:55:04
Das at rennt also heute Abend los. Dein Ausführungsteil ist ja der gleiche, den kannst Du auch direkt in der FHEM Kommandzeile auf Funktion testen.
Wenn Du sagst das at hat nichts getan, dann:
war entweder der Sonnenuntergang gestern schon vorbei als Du das at definiert hast
oder die Bedingung war nicht erfüllt.
Perl ist das relativ egal wie man den Vergleich schreibt aber natürlich gibt es Unterschiede, die werden wahrscheinlich in dem Fall keine Rolle spielen.:
ZitatBinary "==" returns true if the left argument is numerically equal to the right argument.
Binary "!=" returns true if the left argument is numerically not equal to the right argument.
Binary "eq" returns true if the left argument is stringwise equal to the right argument.
Binary "ne" returns true if the left argument is stringwise not equal to the right argument.
Um dem Fehler auf die Spur zu kommen, kannst Du ja einen Log Eintrag einbauen.
{Log 1, "Das at hat ausgeloest. Der Shellywert war ".ReadingsNum("Shelly25.SZ_Rechts","pct",0)}
Zitatder letzte backslash ist in beiden Definitionen sinnlos/bis schädlich - ansonsten ist alles schick.
Du hattest in deinem ersten Post die leere Zeile am Ende unterschlagen, deswegen meine Bemerkung ;) aber die ist wirklich nutzlos.
Gruß Otto
Danke Nobbynews und Otto fuer die schnelle Hilfe!
@Nobbynews: wie bereits gesagt, mein Perl IF Befehl funktioniert. Es ist die Kombination von sunset() und Perl IF Befehl, die das Problem verursacht.
@Otto: Danke fuer den Tip, jetzt weiss ich wie man die FHEM Kommandzeile nutzen kann: { if (ReadingsVal("Shelly25.SZ_Rechts","pct",0) eq 100) { fhem("set Shelly25.SZ_Links pct 80")} } in der FHEM Kommandzeile funktioniert einwandfrei.
und auch wie man Eintrage im Eventlog generieren kann :)
Aber ich habe eine Frage: warum kann ich {Log 1, "Das at hat ausgeloest. Der Shellywert war ".ReadingsNum("Shelly25.SZ_Rechts","pct",0)} schreiben? Mit { wird ein Perl Befehl ausgefuert, aber Log 1 ist ein FHEM Befehl. Haette ich nicht fhem("Log 2 Log 1, "Das at hat ausgeloest. usw usw schreiben sollen????
Wie auch immer, Ergebnis: Ja, {Log 1, "Das at hat ausgeloest. Der Shellywert war ".ReadingsNum("Shelly25.SZ_Rechts","pct",0)} funktioniert und schreibt im Log :o
Anfänger "Blödsinn" hier gelöscht (Frage: warum erscheint diese Zeile nicht im Event Monitor ??? ):
noch mehr Anfänger "Blödsinn" hier gelöscht
TRIGGERTIME_FMT 2021-08-30 12:23:16
Internals:
COMMAND { if (ReadingsVal("Shelly25.SZ_Rechts","pct",0) eq 100)
{Log 1, "Das at hat ausgeloest. Der Shellywert war ".ReadingsNum("Shelly25.SZ_Rechts","pct",0)}
}
DEF *{sunset(-30708,"12:00","23:00")}
{ if (ReadingsVal("Shelly25.SZ_Rechts","pct",0) eq 100)
{Log 1, "Das at hat ausgeloest. Der Shellywert war ".ReadingsNum("Shelly25.SZ_Rechts","pct",0)}
}
FVERSION 90_at.pm:0.241290/2021-04-02
NAME RolladenRunter_TestENS
NR 447
NTM 12:23:16
PERIODIC yes
RELATIVE no
REP -1
STATE Next: 12:23:16
TIMESPEC {sunset(-30708,"12:00","23:00")}
TRIGGERTIME 1630318996
TRIGGERTIME_FMT 2021-08-30 12:23:16
TYPE at
Helper:
DBLOG:
state:
Logdb:
TIME 1630318887.26757
VALUE Next: 12:23:16
READINGS:
2021-08-30 12:21:27 state Next: 12:23:16
Ergebnis im Log gefunden!
2021.08.30 12:23:16.001 1: Das at hat ausgeloest. Der Shellywert war 100
Log ist kein FHEM Befehl sondern ein Perl Funktion von FHEM https://wiki.fhem.de/wiki/DevelopmentModuleAPI#Log
Im Event Monitor werden Events angezeigt, Eine Fehlermeldung wirft keinen Event ...
In deinem Test fehlt jetzt aber etwas!
Im Fehler steht
Zitat{ if (ReadingsVal("Shelly25.SZ_Rechts","pct",0) eq 100)
{ set Shelly25.SZ_Links pct 80 }
Da fehlt der Funktionsaufruf: fhem("FHEM befehl")
Das ist nicht der Code den Du oben gezeigt hast!? Wenn dem nicht so ist, nimm die (Über)Struktur aus der Definition! Alle Zeilenumbrüche raus:
defmod RolladenRunter_Test at *{sunset(0,"17:00","23:00")} { if (ReadingsVal("Shelly25.SZ_Rechts","pct",0) eq 100) { fhem("set Shelly25.SZ_Rechts pct 5")} }
Vielleicht hat der Parser ein Problem ?
Sorry Otto, es war Blödsinn von mir, zu viele Versuche... ::)
OK, wir wissen, Perl wird ausgefuehrt ( {Log 1, "Das at hat ausgeloest. Der Shellywert war ".ReadingsNum("Shelly25.SZ_Rechts","pct",0)} )
Jetzt mit (korrekt) { fhem("set Shelly25.SZ_Links pct 80") } das Ergebniss:
Internals:
COMMAND { if (ReadingsVal("Shelly25.SZ_Rechts","pct",0) eq 100)
{ fhem("set Shelly25.SZ_Links pct 80") }
}
DEF *{sunset(-23379,"12:00","23:00")}
{ if (ReadingsVal("Shelly25.SZ_Rechts","pct",0) eq 100)
{ fhem("set Shelly25.SZ_Links pct 80") }
}
FVERSION 90_at.pm:0.241290/2021-04-02
NAME RolladenRunter_TestENS
NR 447
NTM 14:25:25
PERIODIC yes
RELATIVE no
REP -1
STATE Next: 14:25:25
TIMESPEC {sunset(-23379,"12:00","23:00")}
TRIGGERTIME 1630326325
TRIGGERTIME_FMT 2021-08-30 14:25:25
TYPE at
Helper:
DBLOG:
state:
Logdb:
TIME 1630326215.89751
VALUE Next: 14:25:25
READINGS:
2021-08-30 14:23:35 state Next: 14:25:25
Event monitor:
2021-08-30 14:23:35.899 at RolladenRunter_TestENS Next: 14:25:25
2021-08-30 14:23:35.911 Global global MODIFIED RolladenRunter_TestENS
2021-08-30 14:25:25.009 at RolladenRunter_TestENS Next: 14:23:10
Und im Log finde ich nur:
2021.08.30 14:25:25.001 1: [Shelly_Set] please set the maxtime attribute for proper operation
Diese Fehler Meldung bekomme ich aber überall, auch wenn ich den IF Befehl über die FHEM Kommandozeile eingebe (Unterschied: über die FHEM Kommandozeile es funktioniert).
Ich habe jetzt eine "kranke" Idee Otto:
Wie kann ich den {Log 1, "Das at hat ausgeloest. Der Shellywert war ".ReadingsNum("Shelly25.SZ_Rechts","pct",0)} ueber fhem("....")} eingeben?
(mit doppelten Anführungszeichen bekomme ich Syntax Error)
Ich habe es gekuerz und einfachen Anführungszeichen { fhem("{Log 1, 'Das at hat ausgeloest. Der Shellywert war'} ") }
Siehe da, es funktioniert!
Internals:
COMMAND { if (ReadingsVal("Shelly25.SZ_Rechts","pct",0) eq 100)
{ fhem("{Log 1, 'Das at hat ausgeloest. Der Shellywert war'} ") }
}
DEF *{sunset(-21527,"12:00","23:00")}
{ if (ReadingsVal("Shelly25.SZ_Rechts","pct",0) eq 100)
{ fhem("{Log 1, 'Das at hat ausgeloest. Der Shellywert war'} ") }
}
FVERSION 90_at.pm:0.241290/2021-04-02
NAME RolladenRunter_TestENS
NR 447
NTM 14:56:17
PERIODIC yes
RELATIVE no
REP -1
STATE Next: 14:56:17
TIMESPEC {sunset(-21527,"12:00","23:00")}
TRIGGERTIME 1630328177
TRIGGERTIME_FMT 2021-08-30 14:56:17
TYPE at
Helper:
DBLOG:
state:
Logdb:
TIME 1630328067.75423
VALUE Next: 14:56:17
READINGS:
2021-08-30 14:54:27 state Next: 14:56:17
Attributes:
Ergebnis:
2021.08.30 14:56:17.001 1: Das at hat ausgeloest. Der Shellywert war
Und jetzt verstehe ich die Welt nicht mehr (macht nichts, die habe ich sowieso vorher nicht verstanden...)
Ich habe es mit einem anderen Aktor probiert (meine Tasmotas)
Internals:
COMMAND { if (ReadingsVal("Shelly25.SZ_Rechts","pct",0) eq 100)
{ fhem("set SP111.03 on-for-timer 10") }
}
DEF *{sunset(-20833,"12:00","23:00")}
{ if (ReadingsVal("Shelly25.SZ_Rechts","pct",0) eq 100)
{ fhem("set SP111.03 on-for-timer 10") }
}
FVERSION 90_at.pm:0.241290/2021-04-02
NAME RolladenRunter_TestENS
NR 447
NTM 15:07:51
PERIODIC yes
RELATIVE no
REP -1
STATE Next: 15:07:51
TIMESPEC {sunset(-20833,"12:00","23:00")}
TRIGGERTIME 1630328871
TRIGGERTIME_FMT 2021-08-30 15:07:51
TYPE at
Helper:
DBLOG:
state:
Logdb:
TIME 1630328762.61126
VALUE Next: 15:07:51
READINGS:
2021-08-30 15:06:02 state Next: 15:07:51
Ergebniss:
{ fhem("set SP111.03 on-for-timer 10") } funktioniert und die Lampe geht an!!!!!
Also Zusammenfassung:
AT Befehl
1. mit fester Uhrzeit (*20:00:00) und Perl IF und fhem("...") funktioniert wenn { fhem("set Shelly25.SZ_Links pct 80")}
2. mit Perl Zeitfunktion ( {sunset(0,"12:00","23:00")} ), und Perl IF, und fhem("perl-funktion") funktioniert
3. mit Perl Zeitfunktion ( {sunset(0,"12:00","23:00")} ), und Perl IF, und fhem("...") funktioniert nicht wenn { fhem("set Shelly25.SZ_Links pct 80")}
aber, aber, aber.....
4. mit Perl Zeitfunktion ( {sunset(0,"12:00","23:00")} ), und Perl IF, und fhem("perl-funktion") funktioniert wenn { fhem("set SP111.03 on-for-timer 10") }
Ich mache bestimmt etwas ganz dummes, aber was????
warum macht die Zeiteingabe (feste Zeit vs sunset) den Unterschied?
Hier ist mein Shelly25.SZ_Links
Internals:
DEF 192.168.xxx.xxx
DURATION 0
FVERSION 36_Shelly.pm:v3.3.0-s24222/2021-04-11
INTERVAL 60
MOVING stopped
NAME Shelly25.SZ_Links
NR 282
SHELLYID shellyswitch25-xxxxxxx
STATE stopped
TARGETPCT 100
TCPIP 192.168.xxx.xxx
TYPE Shelly
Helper:
DBLOG:
pct:
Logdb:
TIME 1630328099.82141
VALUE 100
position:
Logdb:
TIME 1630328099.82141
VALUE open
power:
Logdb:
TIME 1630328099.82141
VALUE 0
state:
Logdb:
TIME 1630328099.82141
VALUE stopped
READINGS:
2020-11-03 19:28:53 cloud disabled
2021-08-30 14:54:55 energy_0 81.6
2021-07-29 15:58:11 firmware v1.11.0
2021-08-30 14:54:59 last_dir up
2021-08-30 13:35:08 network connected to 192.168.xxx.xxx
2021-08-30 14:54:59 pct 100
2021-08-30 14:54:59 position open
2021-08-30 14:54:59 power 0
2021-08-30 14:54:55 power_0 124.41
2021-08-30 14:54:59 state stopped
2020-11-03 19:28:53 stop_reason normal
Attributes:
DbLogExclude .*
DbLogInclude state,position,pct,power,stop_reason
cmdIcon open:fts_shutter_up closed:fts_shutter_down half:fts_shutter_50
devStateIcon {my
$alivecolor='fts_shutter_updown' if (ReadingsVal($name, "state", "ERROR") eq "stopped");
$alivecolor='fts_shutter_up@red' if (ReadingsVal($name, "state", "ERROR") eq "moving_up");
$alivecolor='fts_shutter_up@red' if (ReadingsVal($name, "state", "ERROR") eq "opening");
$alivecolor='fts_shutter_down@red' if (ReadingsVal($name, "state", "ERROR") eq "closing");
$alivecolor='fts_shutter_down@red' if (ReadingsVal($name, "state", "ERROR") eq "moving_down");
"
" . FW_makeImage("$alivecolor","WLAN_Status.0") . " pos.:" . ReadingsVal($name,"pct",0) . "%
" }
icon fts_shutter
interval 60
mode roller
model shelly2.5
room Bedroom,HUEDevice,Rolladen
webCmd :open:closed:half:stop:pct
ich beharre auf einen Test nach meiner Empfehlung nach Antwort #6 :)
Man könnte auch mal mit verbose 5 das Log anschauen.
Zu der Frage:
ZitatWie kann ich den {Log 1, "Das at hat ausgeloest. Der Shellywert war ".ReadingsNum("Shelly25.SZ_Rechts","pct",0)} ueber fhem("....")} eingeben?
Du meinst das so?
{fhem("{Log 1, 'Das at hat ausgeloest. Der Shellywert war '.ReadingsNum('Shelly25.SZ_Rechts','pct',0)}")}
@Otto: OK, OK ;D Du hast dir aber falsche Hoffnungen gemacht ;D
Ich musste andere Rolladen finden, weil wenn ich in dieser Uhrzeit mit den Rolladen im Schlaffzimmer spiele, bin ich bald ein geschiedene Man.. ;)
Ergebnis ist das gleiche: es funktioniert nicht.
Eine Linie defmod RolladenRunter_TestENS at *{sunset(6177,"12:00","23:00")} { if (ReadingsVal(" Shelly25.ENS","pct",0) eq 100) { fhem("set Shelly25.ENS pct 95") } }
Internals:
COMMAND { if (ReadingsVal(" Shelly25.ENS","pct",0) eq 100) { fhem("set Shelly25.ENS pct 95") } }
DEF *{sunset(6177,"12:00","23:00")} { if (ReadingsVal(" Shelly25.ENS","pct",0) eq 100) { fhem("set Shelly25.ENS pct 95") } }
FVERSION 90_at.pm:0.241290/2021-04-02
NAME RolladenRunter_TestENS
NR 447
NTM 22:38:01
PERIODIC yes
RELATIVE no
REP -1
STATE Next: 22:38:01
TIMESPEC {sunset(6177,"12:00","23:00")}
TRIGGERTIME 1630355881
TRIGGERTIME_FMT 2021-08-30 22:38:01
TYPE at
Helper:
DBLOG:
state:
Logdb:
TIME 1630355818.96819
VALUE Next: 22:38:01
READINGS:
2021-08-30 22:36:58 state Next: 22:38:01
Attributes:
Log mit Verbose 5
2021.08.30 22:38:02.032 1: [Freezemon] SystemMon: possible freeze starting at 22:38:00, delay is 2.031 possibly caused by: tmr-VOLKSZAEHLER_GetStatus(Verbrauch_aktuell_WPumpe)
2021.08.30 22:38:02.034 5: exec at command RolladenRunter_TestENS
2021.08.30 22:38:02.035 5: redefine at command RolladenRunter_TestENS as *{sunset(6177,"12:00","23:00")} { if (ReadingsVal(" Shelly25.ENS","pct",0) eq 100) { fhem("set Shelly25.ENS pct 95") } }
2021.08.30 22:38:05.104 1: [Freezemon] SystemMon: possible freeze starting at 22:38:03, delay is 2.103 possibly caused by: tmr-at_Exec(RolladenRunter_TestENS) tmr-VOLKSZAEHLER_GetStatus(Verbrauch_aktuell_Haus)
Ok ich gebe auf. Keine Ahnung was da passiert. Den einen Shelly Switch, den ich habe, betreibe ich mit mqtt.
Vielleicht hat jemand mit shelly Modul Lust das Problem nachzustellen :)
Danke fuer deine Zeit und Mühe Otto.
Ich bin schon beruhigt, dass es nicht irgendwelche "Dummheit" von mir ist.
Fuer die jenigen die "Spass" mit der {sunset(... Formel haben wollen, hier ist eine kleine EXCEL Datei, die die richtige Zahl Sekunden (vor-, oder nach- Sonnenuntergang) automatisch berechnet.
EDIT: vereinfachte EXCEL Tabelle
Und warum sollte man ein Spreadsheet nehmen, wenn dafür in FHEM fertige Module und Hilfsfunktionen existieren?
LG
pah
Zitat von: Prof. Dr. Peter Henning am 01 September 2021, 19:14:32
Und warum sollte man ein Spreadsheet nehmen, wenn dafür in FHEM fertige Module und Hilfsfunktionen existieren?
Weil das Verwenden vorhandener Funktionalitäten vielen Anwendern (insbesondere Anfängern) viel zu einfach wäre. Vermutlich eine masochistisch veranlagte Spezies.
ReadingsVal(" Shelly25.ENS","pct",0)
Ich könnte mir vorstellen, dass da ein Leerzeichen (beim deviceName) zuviel ist, was dazu führt, dass immer der default-Wert 0 gezogen wird.
Und dann passiert halt nix - works as designed.
Zitat von: Prof. Dr. Peter Henning am 01 September 2021, 19:14:32
Und warum sollte man ein Spreadsheet nehmen, wenn dafür in FHEM fertige Module und Hilfsfunktionen existieren?
LG
pah
Beeindruckend, Doktor Überheblich!
Danke, dass du dir die Zeit genommen hast deine Weisheit mit uns "Sterblichen" (Anfänger Forum) zu teilen.
Vergnügungsfaktor 10/10
Nutzfaktor 0/10
und wo bitte schön, ist dieser Hilfsfunktion die mir helfen kann, die meine aktuelle Uhrzeit (+2Minuten) vor Sonnenuntergang zu berechnen?
Zitat von: Manos am 02 September 2021, 15:58:27
und wo bitte schön, ist dieser Hilfsfunktion die mir helfen kann, die meine aktuelle Uhrzeit (+2Minuten) vor Sonnenuntergang zu berechnen?
{sunset(0,"17:00","23:00")}
liefert: 20:52:32
{sunset(-120,"17:00","23:00")}
liefert: 20:50:32
Wo ist das Problem??
Wie war das mit dem Nutzfaktor?
Zitat von: Nobbynews am 02 September 2021, 16:07:05
{sunset(0,"17:00","23:00")}
liefert: 20:52:32
{sunset(-120,"17:00","23:00")}
liefert: 20:50:32
Wo ist das Problem??
Wie war das mit dem Nutzfaktor?
Das ist lächerlich.
Verstehest du überhaupt was genau die EXCEL Tabelle macht?
Oder hast du dir nicht Mal die Mühe gegeben die EXCEL runterzuladen??
OK, OK, ich bin im Anfaenger Forum. Ich habe die EXCEL Tabelle vereinfacht, vielleicht kannst du jetzt verstehen was sie berechnet.
Zitat von: Manos am 02 September 2021, 16:38:39
Verstehest du überhaupt was genau die EXCEL Tabelle macht?
Oder hast du dir nicht Mal die Mühe gegeben die EXCEL runterzuladen??
Deine Excel Tabelle baut die FHEM interne Funktion sunset_rel() nach - aber wozu?
Wo ist der Unterschied zwischen dem Ergebnis Deiner Tabelle und dem Ergebnis von sunset_rel(-120) ?
Was ich aber noch nicht verstanden habe - und da hilft mir auch Deine Tabelle nicht weiter - ist die Frage, welches Problem Du genau mit dem Ergebnis der Funktion sunset() hast?
Zitat von: betateilchen am 01 September 2021, 19:58:24
Weil das Verwenden vorhandener Funktionalitäten vielen Anwendern (insbesondere Anfängern) viel zu einfach wäre. Vermutlich eine masochistisch veranlagte Spezies.
Wenn ich das lese, muss ich an den Spruch eines berühmten Formel 1 Fahrers denken: ,,Meinungen sind wie Arschlöcher - jeder hat eines." ―David Coulthard
Hast du überhaupt verstanden was die EXCEL Datei berechnet, oder warst du so besessen im Überheblichkeitswettbewerb mit "Doktor Überheblich" einzusteigen, dass du sie nicht mal geöffnet hast? ::)
Zitat von: betateilchen am 01 September 2021, 19:58:24
ReadingsVal(" Shelly25.ENS","pct",0)
Ich könnte mir vorstellen, dass da ein Leerzeichen (beim deviceName) zuviel ist, was dazu führt, dass immer der default-Wert 0 gezogen wird.
Und dann passiert halt nix - works as designed.
Das war es! Der Versuch mit dem Befehl auf eine Linie hatte den Fehler!
Und plötzlich, die Linie
*{sunset(0,"12:00","23:00")} { if (ReadingsVal("Shelly25.ENS","pct",0) eq 100) { fhem("set Shelly25.ENS pct 95") } }
funktioniert! Vielen Dank! :D
Zitat von: Manos am 02 September 2021, 17:16:19
Hast du überhaupt verstanden was die EXCEL Datei berechnet, oder warst du so besessen im Überheblichkeitswettbewerb mit "Doktor Überheblich" einzusteigen, dass du sie nicht mal geöffnet hast? ::)
Natürlich habe ich die Excel Datei heruntergeladen und sogar ausprobiert.
Bei mir kam sowohl in Deiner Tabelle als auch bei sunset_rel(-120) die gleiche Differenz zu (Sonnenuntergang - 2 Minuten) raus.
sunset liefert: 20:46:07
sunset_rel liefert: 03:14:56
Wenn ich in Deine Tabelle 20:46:07 und Differenz = 0 eintrage, errechnet Dein Excel ebenfalls 3 Stunden, 14 Minuten, 56 Sekunden
Wenn ich sunset_rel(-120) aufrufe, kommt eine Differenz raus, die sich um 2 Minuten zum ersten getesten Wert unterscheidet.
Apropos:
Zitat von: Manos am 02 September 2021, 17:16:19
,,Meinungen sind wie Arschlöcher - jeder hat eines." ―David Coulthard
im Zusammenhang damit:
Zitat von: Manos am 02 September 2021, 16:38:39
OK, OK, ich bin im Anfaenger Forum.
Stimmt -
Anfänger Forum.
Falls Du auf der Suche nach dem Kotzbrocken-Forum sein solltest, muss ich Dich enttäuschen, sowas haben wir hier nicht.
Ich gehe jetzt mal Popcorn machen...
Zitat von: Manos am 02 September 2021, 15:58:27
und wo bitte schön, ist dieser Hilfsfunktion die mir helfen kann, die meine aktuelle Uhrzeit (+2Minuten) vor Sonnenuntergang zu berechnen?
Was hat diese Anforderung mit der Excel-Tabelle zu tun?
ZitatEXCEL Datei berechnet
Soso, eine rechnende Datei. Ist mir bisher auch noch nicht untergekommen.
Auf meine einfache Frage, warum man ein Spreadsheet nutzen sollte, ist außer persönlichen Beleidigungen jedenfalls noch keine Antwort gekommen. Ich glaub ich setz mich neben Udo, mit etwas Popcorn.
pah
Zitat von: Prof. Dr. Peter Henning am 02 September 2021, 17:51:35
Ich glaub ich setz mich neben Udo, mit etwas Popcorn.
/insider:
Sei willkommen. Und dann freuen wir uns beide darüber, dass es die Bundesnetzagentur endlich geschafft hat, die TKG & EMVG Beitragsbescheide für die Jahre 2017 und 2018 zu verschicken.
--
Ach ja. Und meine OW fragte mal wieder, warum ich das überhaupt noch zahle. Nostalgie halt.
LG
pah
Peter, wir müssen einfach nur durchhalten...
2015/16 waren es 44,91 Euro
2017/18 sind es 34,52 Euro
Wenn das mit dem Preisverfall so weitergeht, bekommen wir ab ca. 2030 regelmäßig Geld ausgezahlt 8)
Wart mal. Der EuGH hat gerade entschieden, dass die BNA mehr "Eigenständigkeit" haben müsse. Das wird teuer.
Andererseits kriege ich eine sehr hohe 6-stellige Summe von der BNA für ein Projekt, kann also nicht meckern.
LG
pah
Ich bitte hier alle wieder zum Thema zurück zu kommen und insbesondere persönliche Fehden sein zu lassen. Danke
Zitat von: Amenophis86 am 02 September 2021, 19:30:22
Ich bitte hier alle wieder zum Thema zurück zu kommen
Hier gibt es doch gar kein Thema mehr.
Zitat von: ThreadtitelGelöscht: AT Befehl mit sunset und PERL IF Problem
Zitat von: betateilchen am 02 September 2021, 17:59:22
/insider:
Sei willkommen. Und dann freuen wir uns beide darüber, dass es die Bundesnetzagentur endlich geschafft hat, die TKG & EMVG Beitragsbescheide für die Jahre 2017 und 2018 zu verschicken.
Habe ich auch bekommen....
Zitat von: Prof. Dr. Peter Henning am 02 September 2021, 18:19:55
Ach ja. Und meine OW fragte mal wieder, warum ich das überhaupt noch zahle. Nostalgie halt.
dito
wenn ich alles nochmal durchlese:
wurde bis Antwort #7 behauptet, es funktioniert in Abhängigkeit eines bestimmten Namens des Devices nicht wenn die DEF einiges an Zeilenumbrüchen enthält. Der Ausführungsteil geht insbesondere mit einem Zeilenumbruch los!
Nach meiner Empfehlung: es doch mal einzeilig zu testen, wurde ein Leerzeichen in den Devicenamen eingebaut und die if Bedingung schlug fehl - dieses Leerzeichen ist in der Version in Antwort #7 nicht vorhanden.
Jetzt heißt es: Aha Fehler gefunden: der Schreibfehler war Schuld.
Könnte sein, die lists in Antwort #7 waren manipuliert.
Könnte sein, ich habe da was nicht gesehen oder die Device Namen in Antwort #7 sind auch falsch. Aber es wurde ja am Anfang gezeigt: mit gleichem Devicenamen geht die Variante ohne sunset und die mit sunset schlägt fehl.
Könnte sein, trotz richtiger Abfrage und richtigem Devicenamen gibt es wirklich ein Problem für den Parser wenn der Ausführungsteil hinter der Perl Klammer für sunset mit einem Zeilenumbruch startet oder überflüssig strukturiert ist?
Ich kann kein Problem nachvollziehen, ich habe exakt den Code aus #1 mit Dummies udn einer simplen Perlfunktion nachvollzogen.
ja und weiter? Warum rührst Du die Sch... jetzt nochmal auf?
Das "Problem" ist gelöst, alle sind glücklich - nur Otto nicht.
Aber Du hattest doch gar kein Problem, also lass doch auch einfach mal gut sein, anstatt die Trolle wieder zu wecken.