Hauptmenü

Einfache Timer Funktion

Begonnen von zgadgeter, 02 September 2013, 21:14:29

Vorheriges Thema - Nächstes Thema

zgadgeter

Hallo,
bin neu hier und probiere schone die ganze Zeit eine einfache Funktion mit einer IT Steckdose zu machen.
Die IT Steckdosen koennen anscheinend nicht die einfache Funktion on-for-timer. Die koennen anscheinend bei FHEM nur on und off.
Ich moechte eine Pumpe die an der IT Steckdose haengt, alle 15 minuten, fuer 15 Minuten anmachen. Also, 15 Minuten an, 15 Minuten aus.
Habe folgendes probiert, funktioniert aber nicht:
define pumpean at +*00:15:00 set PoolPump on-for-timer 720

da bekomme ich folgenden Fehler im Log:
2013.09.02 21:09:41 3: pumpean: Unknown argument on-for-timer, choose one of off on

Weiss jemand wie ich das hin bekomme? danke.
NUC FHEM mit vielen Intertechno/FS20/Flamingo schalter
und Busware CUL und nanoCUL

betateilchen

define pumpean at +*00:15:00 { fhem("set PoolPump on"); fhem("define pumpeaus at +00:12 set PoolPump off"); }
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

zgadgeter

Boah, das war schnell, danke. Habe keine Ahnung wie das Funktioniert...muss ich erst mal nachlesen.
Frage: warum 12 Minuten im zweiten Teil, oder sollte das auch 15 sein?

danke!
NUC FHEM mit vielen Intertechno/FS20/Flamingo schalter
und Busware CUL und nanoCUL

betateilchen

weil 720 Sekunden nach meiner Rechnung 12 Minuten sind.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

zgadgeter

Stimmt. Sorry, mein Fehler. Ich wollte ja jeweils 15 minuten an, minuten aus.

Habe es gerade probiert, bekomme folgenden Fehler:
Unknown command fhem("define, try help.
Unknown command }, try help.
NUC FHEM mit vielen Intertechno/FS20/Flamingo schalter
und Busware CUL und nanoCUL

krimskrams

Hallo,
ich bin ebenfalls bei meinen ersten Schritten mit FHEM und will auch so eine "Intervall Schaltung" definieren. Gibt es da eigentlich auch die Möglichkeit, so etwas wie "immer um 20 nach" festzulegen, ähnlich wie bei cron? Ich würde gerne um voll und halb zwei Werte vergleichen und dann für 20 Minuten einen Aktor schalten.

Achso, wenn Du alle 15 Minuten die Pumpe für 15 Minuten einschalten willst, ist das recht einfach ... die Pumpe läuft dann nämlich immer, wahrscheinlich kommen daher im Beispiel die 12 Minuten Einschaltdauer ;-)

krimskrams

betateilchen

Zitat von: zgadgeter schrieb am Mo, 02 September 2013 21:39Stimmt. Sorry, mein Fehler. Ich wollte ja jeweils 15 minuten an, minuten aus.

dann muss es "vorne" +*00:30 und "hinten" +00:15 heißen

ZitatUnknown command fhem("define, try help.
Unknown command }, try help.

hast Du Dich irgendwo vertippt? Mach doch mal ein List von Deiner Definition und poste die hier
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Zitat von: krimskrams schrieb am Mo, 02 September 2013 21:50Gibt es da eigentlich auch die Möglichkeit, so etwas wie "immer um 20 nach" festzulegen, ähnlich wie bei cron?

Natürlich

define bla at +*01:00 {}
attr bla alignTime 00:20


Damit wird das at erstmal alle Stunde ausgeführt, und "zusätzlich" einmal um 00:20 Uhr, wobei dann der Zähler neu gestartet wird. Das nächste Ausführen erfolgt dann um 01:20 usw.

Zitat von: krimskrams schrieb am Mo, 02 September 2013 21:50wahrscheinlich kommen daher im Beispiel die 12 Minuten Einschaltdauer

wie schon gesagt: die 12 Minuten kamen von den vom Fragesteller ursprünglich vorgegebenen 720 Sekunden.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

zgadgeter

Zitat von: betateilchen schrieb am Mo, 02 September 2013 21:52
Zitat von: zgadgeter schrieb am Mo, 02 September 2013 21:39Stimmt. Sorry, mein Fehler. Ich wollte ja jeweils 15 minuten an, minuten aus.

dann muss es "vorne" +*00:30 und "hinten" +00:15 heißen

ZitatUnknown command fhem("define, try help.
Unknown command }, try help.

hast Du Dich irgendwo vertippt? Mach doch mal ein List von Deiner Definition und poste die hier

Ich habe deine Zeile Kopiert und eingetragen, also nicht selbst getippt. Habe allerdings die 12 auf 15 gesetzt.
Habe jetzt den command geändert so das pumpean auf 30 minuten steht, bekomme aber folgendes im Log:
2013.09.02 21:55:51 3: pumpean: Unknown command {, try help.
2013.09.02 22:10:51 3: pumpean: Unknown command {, try help.

Frage: wie kann ich diesen command komplett löschen so das ich neu anfangen kann?
danke fuer die Hilfe.
NUC FHEM mit vielen Intertechno/FS20/Flamingo schalter
und Busware CUL und nanoCUL

Zrrronggg!

Zunächst mal:

define pumpean at +*00:15:00 { fhem("set PoolPump on"); fhem("define pumpeaus at +00:12 set PoolPump off"); }

kann man auch kürzer haben:

define pumpean at +*00:15:00 set PoolPump on ; define pumpeaus at +00:12 set PoolPump off

Insbesondere gibt es in dem Statement keinen PERL Anteil, also ist die  {} Klammerung nicht nötig.
Dieser Teil hier:
{ fhem("xy...
bedeutet "übersetzt":
FHEM soll PERL sagen, das PERL FEHM sagen soll XY zu machen.

So oder so:


Das macht (beides) die Pumpe aber NICHT "15 Minuten an, 15 Minuten aus".

Etwas irreführens ist hier schon die Eingangsfrage von zgdageter:
Zitatalle 15 minuten, fuer 15 Minuten anmachen. Also, 15 Minuten an, 15 Minuten aus.

Alle 15 Minuten für 15 Minuten anmachen heisst nämlich: Pumpe läuft immer, gelle?   ;-)

Oh, ich sehe gerade, hast du schon bemerkt. Sorry.

Okay, also ich würde das dann so machen:

define pumpean at +*00:30:00 set PoolPump on ; define pumpeaus at +00:15:00 set PoolPump off

Beachte, das Betateilchens Code zwar aus meiner Sicht etwas umständlich ist aber an sich trotzdem geht. Dass er den Umweg über PERL geht dürfte trotzdem keine Fehlermeldung erzeugen.
Die Fehlermeldungen irritieren mich also etwas. Ich vermute, das beim Kopieren irgendwelche verdeckten Zeichen die im Code der Webseite sind mitkopiert wurden.

ZitatFrage: wie kann ich diesen command komplett löschen so das ich neu anfangen kann?

delete pumpean

eingeben. Und dann meinen Code mal per Hand eintippen, also nicht kopieren.


FHEM auf Linkstation Mini, CUL 868 SlowRF, 2xCUL 868 RFR, CUL 433 für IT, 2xHMLAN-Configurator mit VCCU, ITV-100 Repeater, Sender und Aktoren von FHT, FS20, S300, HM, IT, RSL

zgadgeter

Zitat von: Zrrronggg! schrieb am Di, 03 September 2013 00:19Und dann meinen Code mal per Hand eintippen, also nicht kopieren.
Hallo und vielen Dank! Habe das jetzt per Hand eingegeben, und im Moment keine errors bekommen....werde es im Laufe des Tages beobachten.
Nochmals, danke.
NUC FHEM mit vielen Intertechno/FS20/Flamingo schalter
und Busware CUL und nanoCUL

betateilchen

Zitat von: Zrrronggg!Zunächst mal:
...
kann man auch kürzer haben:

Technisch hast Du zwar völlig recht, aber wenn es darum geht, didaktisch etwas verständlich darzustellen, bist Du eine ziemliche Niete. Man sollte nicht nur immer davon ausgehen, auf eine gestellte Frage die technisch im Augenblick am einfachsten erscheinendste Antwort zu geben, sondern man sollte, wenn man erkennt, dass die Frage von einem Anfänger kommt, versuchen, sich in das Problem hineinzudenken und nicht nur in die gestellte Frage.

Erstens ging es mir darum, dem Fragesteller (Anfänger) eine verständliche Lösung für sein Problem vorzuschlagen, und das Verstehen geht mit in Klammern zusammengefaßten Befehlen einfach leichter.

Zweitens heißt das zu schaltende Geräte Poolpump. Ich gehe deshalb davon aus, dass mit hoher Wahrscheinlichkeit als nächstes die Frage kommen wird "Wie mache ich das nun, dass das Schalten nur tagsüber/innerhalb eines bestimmten Zeitraumes erfolgt?" Das wäre auch logisch, denn normalerweise läßt man einen Poolpumpe nicht 24/7 laufen. Und spätestens dann brauchst Du die Klammern doch, weil dann Bedingungen ins Spiel kommen.

Zitat von: zgadgeterIch habe deine Zeile Kopiert und eingetragen, also nicht selbst getippt.

Mit copy und paste sollte man erst dann arbeiten, wenn man verstanden hat, WAS man da kopiert. Und das c&p aus Browsern kann in vielen Fällen aufgrund von Zeichensatzproblemen schiefgehen, vor allem, wenn man versucht, von einem Windows-Rechner auf einen Linux-Rechner zu kopieren.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

zgadgeter

Oh, ich wollte hier keinen Streit anfangen! Ich bin sehr dankbar fuer die Hilfe, alle Hilfe, die ich hier bekomme.
Und, es gibt bestimmt mehrere Wege das Fell von der Katze runter zu holen :).
Und, richtig verstanden habe ich weder das eine noch das andere...muss ich noch dran arbeiten.

Und, Betateilchen, Du hast recht, es wird die nächste Frage doch kommen :).  Hatte gehofft das wenn ich verstanden hätte wie das Grundsätzliche funktioniert, werde ich selbst es hin bekommen die "weitere Frage" zu beantworten. Wie gesagt, da muss ich halt dran arbeiten.

Und, nochmals vielen dank alle für die Hilfe...und, seid nett zu einander...."Niete" ist kein schönes Wort :).
NUC FHEM mit vielen Intertechno/FS20/Flamingo schalter
und Busware CUL und nanoCUL

Zrrronggg!

ZitatWenn es darum geht, didaktisch etwas verständlich darzustellen, bist Du eine ziemliche Niete.
Hm. Ich kommentiere deine Lösungen GERADE WEIL ich sie für didaktisch subotpimal empfinde.

ZitatMan sollte nicht nur immer davon ausgehen, auf eine gestellte Frage die technisch im Augenblick am einfachsten erscheinendste Antwort zu geben, sondern man sollte, wenn man erkennt, dass die Frage von einem Anfänger kommt, versuchen, sich in das Problem hineinzudenken und nicht nur in die gestellte Frage.

Genau. Aber vor allem sollte man auch dem Fragesteller dazu verhelfen, seine Fragen selbst zu beantworten. Dazu ist das Wichtigste, dass er das Prinzip kapiert.

ZitatErstens ging es mir darum, dem Fragesteller (Anfänger) eine verständliche Lösung für sein Problem vorzuschlagen, und das Verstehen geht mit in Klammern zusammengefaßten Befehlen einfach leichter.

Und genau da scheiden sich die Geister. Nach meiner eigenen Erfahrung von früher UND dem was ich hier im Forum lese haben die meisten Leute Probleme mit Klammereben und wann man welche Klammer einsetzen muss und ob und wann man PERL einsetzen muss. Ich versuche daher immer darauf abzuzielen, das die Leute kapieren wo Klammern hinmüssen und warum. BZW wo man keine braucht.
Deine Beispiele funktionieren, aber enthalten sehr oft  Klammerebene und Involvierung von PERL die nicht notwendig sind. Einfach mal ALLE Befehle in { fhem(" "); } ein zufassen macht die Sache doch wirklich nicht übersichtlicher. Und das ist doch eine wirklich exotische Lösung, die in der Form hier sonst keiner von den Helfern propagiert. Der Vorteil deiner Methode ist allerdings, dass sie der Kram dann leicht erweitern lässt, wenn man PERL tatsächlich braucht, ja du versuchst so zu formulieren, dass Leute die keine Ahnung haben automatisch mit höherer Wahrscheinlichkeit richtig ergänzen und der Code dann noch funktioniert.

ABER die Leute VERSTEHEN nicht warum das funktioniert. Sie verstehen nicht, warum die Klammern da sind und warum PERL involviert wurde oder nicht. Und dass bedeutet, das sie wenig später scheitern und Fehler nicht finden. Und deutlich länger wird der Code ausserdem.

ZitatIch gehe deshalb davon aus, dass mit hoher Wahrscheinlichkeit als nächstes die Frage kommen wird "Wie mache ich das nun, dass das Schalten nur tagsüber/innerhalb eines bestimmten Zeitraumes erfolgt?" Das wäre auch logisch, denn normalerweise läßt man einen Poolpumpe nicht 24/7 laufen. Und spätestens dann brauchst Du die Klammern doch, weil dann Bedingungen ins Spiel kommen.

Absolut, davon gehe ich auch aus.  Und deine Methode hat die grössere Chance, dass er den Code so ergänzt, dass es tatsächlich funktioniert, bei mir muss er ein 2tes mal nachfragen.
Stimmt. ABER: Der Code funktioniert bei ihm in diesem Falle nur, weil er ohne Verständnis nach einem SCHEMA gearbeitet hat.  Das nennt man "Cargo-Cult Programming"

Der Nutzer ist dann aber später kaum in der Lage, den Code zu debuggen, weil er nicht weiss, wozu die ganzen Klammern und Semikolons da drin sind. Er verfügt auch nicht über eigenes verständnis, mit dem er später grössere Probleme  lösen kann. Sieh dir hier im Forum nur mal an, wieviel Threads von Problemen handeln, weil Leute die Klammern falsch setzen.

Mir wäre also lieber, er fragte noch mal nach, wenn er die von die antizipierten Fragestellungen hat. Und DANN erklären wir ihm, dass in diesen Fällen PERL involvieren muss und dass er dann die Klammern so und so setzen muss. Und dann versteht er das. Das sind am ANFANG sicher mehr Fragen, aber am später weniger.

Ich denke du gibst den Leuten die Wasser brauchen einen Brunnen Ich glaube es ist besser man zeigt Ihnen wie man den Brunnen baut. Das dauert am Anfang länger.



FHEM auf Linkstation Mini, CUL 868 SlowRF, 2xCUL 868 RFR, CUL 433 für IT, 2xHMLAN-Configurator mit VCCU, ITV-100 Repeater, Sender und Aktoren von FHT, FS20, S300, HM, IT, RSL

betateilchen

Zitat von: Zrrronggg! schrieb am Di, 03 September 2013 12:19Ich denke du gibst den Leuten die Wasser brauchen einen Brunnen Ich glaube es ist besser man zeigt Ihnen wie man den Brunnen baut. Das dauert am Anfang länger.

Ich war lange genug in der Entwicklungshilfe tätig, um zu erkennen, dass Du keinen blassen Schimmer davon hast, wovon Du hier redest.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!