"Schleife" bzw. "Programm" mit FHEM: einen Funkschalter "takten"

Begonnen von Nimral, 17 Januar 2019, 10:41:34

Vorheriges Thema - Nächstes Thema

Nimral

Hi allseits,

entschuldigt wenn ich etwas frage, was ich sicher auch irgendwann irgendwo in der Doku oder im Forum gefunden hätte, nach 30 Minuten Suche fand ich nichts was mir hilft, vielleicht spart mir jemand etwas Zeit, und postet einen Link der mir weiter hilft.

Ich möchte einen Verbraucher "takten", d.h. er soll folgendermaßen geschaltet werden:

Jeden Tag von 7 Uhr bis 20 Uhr, alle 15 Minuten, "Ein" - Signal an einen Funkschalter, 30 Sekunden warten, dann "Aus".

Der Funkschalter ist angelegt und funktioniert (manuell). Wie komme ich nun weiter um das o.g. "Programm" in FHEM zu machen?

Thx, Armin.

Christoph Morrison

Zitat von: Nimral am 17 Januar 2019, 10:41:34
Hi allseits,

entschuldigt wenn ich etwas frage, was ich sicher auch irgendwann irgendwo in der Doku oder im Forum gefunden hätte, nach 30 Minuten Suche fand ich nichts was mir hilft, vielleicht spart mir jemand etwas Zeit, und postet einen Link der mir weiter hilft.

Ich möchte einen Verbraucher "takten", d.h. er soll folgendermaßen geschaltet werden:

Jeden Tag von 7 Uhr bis 20 Uhr, alle 15 Minuten, "Ein" - Signal an einen Funkschalter, 30 Sekunden warten, dann "Aus".

Der Funkschalter ist angelegt und funktioniert (manuell). Wie komme ich nun weiter um das o.g. "Programm" in FHEM zu machen?

Thx, Armin.

Hier ein paar Stichworte:
DOIF, [+:15], [07:00-20:00], wait / on-for-timer, do




Nimral

Wow! Das ging superschnell, vielen Dank. Die Seite über die "Zeitschaltuhr" ist perfekt genau das was ich suche, ich arbeite mich gleich rein und durch die verschiedenen Möglichkeiten.

Herzlichen Dank!

Armin.

Byte09

#5
Zitat von: Nimral am 17 Januar 2019, 11:08:03
Wow! Das ging superschnell, vielen Dank. Die Seite über die "Zeitschaltuhr" ist perfekt genau das was ich suche, ich arbeite mich gleich rein und durch die verschiedenen Möglichkeiten.

Herzlichen Dank!

Armin.

MSwitch wäre auch eine Möglichkeit .
hier bräuchtest du nur noch die eigentlichen schaltbefehle eintragen , der rest ist selbserklärend.

gruss Byte09

defmod Takt MSwitch
attr Takt MSwitch_Comments 1
attr Takt MSwitch_Debug 0
attr Takt MSwitch_Delete_Delays 1
attr Takt MSwitch_Expert 0
attr Takt MSwitch_Extensions 0
attr Takt MSwitch_Help 1
attr Takt MSwitch_Ignore_Types notify allowed at watchdog doif fhem2fhem telnet FileLog readingsGroup FHEMWEB autocreate eventtypes readingsproxy svg cul
attr Takt MSwitch_Include_Devicecmds 1
attr Takt MSwitch_Include_MSwitchcmds 0
attr Takt MSwitch_Include_Webcmds 0
attr Takt MSwitch_Inforoom MSwitch
attr Takt MSwitch_Lock_Quickedit 1
attr Takt MSwitch_Mode Notify
attr Takt room 1_test

setstate Takt active
setstate Takt 2019-01-17 12:00:22 .Device_Affected FreeCmd-AbsCmd1,FreeCmd-AbsCmd2
setstate Takt 2019-01-17 12:04:24 .Device_Affected_Details FreeCmd-AbsCmd1#[NF]cmd#[NF]cmd#[NF]#[NF]#[NF]delay1#[NF]delay1#[NF]00#[dp]00#[dp]00#[NF]00#[dp]00#[dp]00#[NF]#[NF]#[NF]0#[NF]0#[NF]1#[NF]0#[NF]kommentar#[sp]-#[sp]auszuf#[sp]in#[sp]cmd1#[sp]befehl#[sp]alle#[sp]15#[sp]min#[sp](#[sp]set#[sp]DEVICE#[sp]on)#[NF]0#[NF]0#[NF]1#[ND]FreeCmd-AbsCmd2#[NF]cmd#[NF]cmd#[NF]#[NF]#[NF]delay1#[NF]delay1#[NF]00#[dp]07#[dp]00#[NF]00#[dp]00#[dp]00#[NF]#[NF]#[NF]0#[NF]0#[NF]1#[NF]0#[NF]kommentar#[sp]-#[sp]auszuf#[sp]in#[sp]cmd1#[sp]befehl#[sp]alle#[sp]15#[sp]+#[sp]7min#[sp](#[sp]set#[sp]DEVICE#[sp]off)#[NF]0#[NF]0#[NF]1
setstate Takt 2019-01-17 12:00:14 .Device_Events no_trigger
setstate Takt 2019-01-17 11:59:43 .First_init done
setstate Takt 2019-01-17 11:59:43 .Trigger_cmd_off no_trigger
setstate Takt 2019-01-17 11:59:43 .Trigger_cmd_on no_trigger
setstate Takt 2019-01-17 12:00:14 .Trigger_condition
setstate Takt 2019-01-17 11:59:43 .Trigger_off no_trigger
setstate Takt 2019-01-17 11:59:43 .Trigger_on no_trigger
setstate Takt 2019-01-17 12:00:14 .Trigger_time on~off~ononly[00#[dp]15*07#[dp]00-20#[dp]00]~offonly~onoffonly
setstate Takt 2019-01-17 11:59:43 .V_Check V2.00
setstate Takt 2019-01-17 12:00:00 EVENT Takt:execute_timer_P3:12:00
setstate Takt 2019-01-17 12:00:00 EVTFULL Takt:execute_timer_P3:12:00
setstate Takt 2019-01-17 12:00:00 EVTPART1 Takt
setstate Takt 2019-01-17 12:00:00 EVTPART2 execute_timer_P3
setstate Takt 2019-01-17 12:00:00 EVTPART3 12:00
setstate Takt 2019-01-17 12:01:46 Trigger_device no_trigger
setstate Takt 2019-01-17 11:59:43 Trigger_log off
setstate Takt 2019-01-17 12:04:24 state active



edit: startet sofort ( siiehe folgebeitrag )

Nimral

Jede Lösung bringt gleich ein neues Problem - typisch Einsteiger.

Die Defintion habe ich geschafft:

define PumpeStart at *08:00:00 {
{ fhem("define PumpeEin at +*{48}00:15:00 set Sender_FS20_01 on-for-timer 5") }
}

Passt. Aber nun das Folgeproblem:

das at wird auf morgen früh, 8:00 definiert. Ich möchte natürlich, dass der Zeitschalter jetzt sofort mit seiner Arbeit beginnt.

Der naive Versuch war, beim at ein Datum mitzugeben, aber das akzeptiert FHEM nicht.
Der nächste naive Versuch war, das TRIGGERTIME oder TRIGGERTIME_FMT Attribut auf heute früh, 08:00:00 zu setzen, das geht so leider auch nicht.

Wie bekomme ich meine Zeitschaltuhr jetzt sofort in Gang?

Armin.

Beta-User

Wie wäre es mit "set PumpeStart execNow"?

Bitte solche Sachen erst mal selbst in der Detailansicht des Geräts (hier: at) suchen, vieles ist eigentlich selbsterklärend (jedenfalls, wenn man keine Attributorgien für die Einstellungen benötigt).
Auch ein Blick in die commandref schadet im allgemeinen nicht (zu den meisten Modulen ist das eher übersichtlich).

Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Nimral

Zitat von: Byte09 am 17 Januar 2019, 12:04:01
MSwitch wäre auch eine Möglichkeit .
hier bräuchtest du nur noch die eigentlichen schaltbefehle eintragen , der rest ist selbserklärend.

...

gruss Byte09


Danke für Deinen Vorschlag.

Ich habs auf Anhieb nicht genau geschafft, die Sequenz zu verstehen.

Angesichts dessen, dass das ein ziemlicher Haufen Kommandos sind, und es den at Befehl gibt der das offenbar ganz gut kann - warum wollte ich es auf diese Weise machen? Ist da irgendeine tiefere Magie dahinter, in die es sich einzuarbeiten lohnt, weil mir das anderswo mal nützen wird, oder ist das einfach nur eine theoretisch denkbare Alternative, die man zur Kenntnis nimmt aber nicht wirklich braucht?

Amrin

Thx, Armin.

Christoph Morrison

Zitat von: Byte09 am 17 Januar 2019, 12:04:01
MSwitch wäre auch eine Möglichkeit .

Trag das doch mal (mit Erklärung) ins Wiki auf die Zeitschaltuhr-Seite ein. Ist eigentlich tatsächlich eine häufige Frage und TIMTOWDI.

Byte09

Zitat von: Nimral am 17 Januar 2019, 12:13:21
Danke für Deinen Vorschlag.

Ich habs auf Anhieb nicht genau geschafft, die Sequenz zu verstehen.

Angesichts dessen, dass das ein ziemlicher Haufen Kommandos sind, und es den at Befehl gibt der das offenbar ganz gut kann - warum wollte ich es auf diese Weise machen? Ist da irgendeine tiefere Magie dahinter, in die es sich einzuarbeiten lohnt, weil mir das anderswo mal nützen wird, oder ist das einfach nur eine theoretisch denkbare Alternative, die man zur Kenntnis nimmt aber nicht wirklich braucht?

Amrin

Thx, Armin.

war nur eine weiter alternative. ansonste ist MSwitch eine one-for-all Lösung, die über webinterface konfiguriert wird.


gruss Byte09

Byte09

Zitat von: Christoph Morrison am 17 Januar 2019, 12:16:24
Trag das doch mal (mit Erklärung) ins Wiki auf die Zeitschaltuhr-Seite ein. Ist eigentlich tatsächlich eine häufige Frage und TIMTOWDI.

werde ich mal machen ;-)

gruss Byte09

Nimral

#12
Zitat von: Beta-User am 17 Januar 2019, 12:12:46
Wie wäre es mit "set PumpeStart execNow"?

Nicht gut wärs. Ich habe den Befehl schon vor Deinem Hinweis in der at Kommandoreferenz gefunden, aber er funzt nicht.

set PumpeStart execNow

ergibt stets:

"Unknown argument execNow, choose one of active inactive modifyTimeSpec"

Abgesehen davon wollte ich, dass die Zeitschaltuhr jetzt sofort voll loslegt, also für den Rest des heutigen Tages bis 20:00 UIhr bereits ein/aus schaltet. Der Befehl würde - wenn er ginge - das Kommando ja nur ein Mal ausführen. Ich habe JETZT Wasser im Keller, und möchte ab jetzt abpumpen, nicht erst ab morgen früh :-)

Dennoch wärs natürlich eine Vereinfachung beim Testen, wenn Dein Kommando ginge - aber es scheint nicht unterstützt zuwerden.

Armin

Beta-User

An sich wird es unterstützt (ich habe das letzten Freitag genutzt), und es wäre auch nett gewesen, wenn du das vorher erwähnt hättest.

Aber an sich würde ich das auch anders lösen - ausnahmsweise mit _einem_ Attribut ;) :
define PumpeEin at +*00:15:00 set Sender_FS20_01 on-for-timer 5
attr PumpeEin disabledForIntervals 00:00-08:00 19:50-24:00

Kann aber grade nicht testen, müßte aber gleich loslegen.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Nimral

#14
Zitat von: Beta-User am 17 Januar 2019, 12:40:10

...


ExecNow gerade nochmnal versucht, copy&paste um Tippfehler auszuschließen, nein, selbe Fehlermeldung, klappt nicht. Seltsam, dass es bei Dir klappt. Mein FHEM ist schon relativ alt: 5.7, vielleicht ist das der Grund?

Dein Vorschlag mit dem Attribut: interessante Variante, danke dafür.

Immerhin löst sich das Problem innerhalb von 24 Stunden von alleine :-)

HG Armin