Befehl einmalig für 2 sekunden

Begonnen von stay_tuned, 11 Februar 2020, 13:41:46

Vorheriges Thema - Nächstes Thema

stay_tuned

Hallo zusammen,
ich komme leider nicht dahinter wie ich einen Befehl einmalig für 2 sekunden ausführen kann. Daher bitte ich dieses Forum um Hinweise wie ich das umsetzten könnte?

Dieses Command möchte ich genau für 2 Sekunden ausführen:
*{sunset(0,"17:00","22:00")} set EG_Blind_.*_down TRIGGER

Bin für jeden Tipp dankbar
mlg

Beta-User

Hallo und willkommen im FHEM-Forum!

Das geht leider so nicht, FHEM setzt die Befehle ab und läuft dann weiter (sonst besteht das Risiko, dass Events verloren gehen oder andere Aktionen zu spät ausgeführt werden).

Aber was genau soll "TRIGGER" sein? Wenn es sich auf  Geräte bezieht, die die "SetExtensions" kennen oder auf interne Weise "on-for-timer" unterstützen (CUL_HM-Geräte, z.B.), könnte folgendes klappen:
*{sunset(0,"17:00","22:00")} set EG_Blind_.*_down on-for-timer 2
Da hier regex verwendet wird und daher vermutlich mehrere Geräte angesprochen werden: Ggf. kommt sich da funktechnisch was ins Gehege; dann mußt du den Befehl entzerren, z.B. über Mechanismen, die structure bereitstellt.

(Meine weitere Vermutung ist, dass es sich um verschiedene Relays handelt, die zur Rollladensteuerung eingesetzt werden. Dann würde ich mal einen Blick auf das Modul ROLLO empfehlen, und danach dann auf AutoShuttersControl  ;) ;D ;) ::) ).

Gruß und weiter viel Spaß,

Beta-User
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

Otto123

Hi,

was genau meinst Du damit?

Ein Befehl wird doch ausgeführt und weg ist er?
Du willst nach 2 sec nach dem Befhel  set EG_Blind_.*_down TRIGGER einen Anderen ausführen?
set EG_Blind_.*_down TRIGGER;; sleep 2;; set EG_Blind_.*_down Flups

Du willst 2 sec lang Dauerfeuer senden? Ne oder? :o

Oder das was Beta-User empfohlen hat, während ich schrieb :)

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

stay_tuned

#3
Hallo zusammen,
vielen Dank für eure Antworten
meine Rollos werden über eine Simatic S7 gesteuert. FHEM ist an die S7 connected aber ich kein leider nur mit TRIGGER arbeiten. Mit 2 sekunden würden sich die Rollos genau so öffnen wir es mir passen würde.
Ich habe ein attr mit webCmd für den TRIGGER Befehl hinzugefügt
mlg

Otto123

#4
Bist Du sicher?
Wenn ich das hier richtig verstehe:
Setset <name> S7_AWrite {ON|OFF|TRIGGER};

Note: TRIGGER sets the bit for 1s to ON than it will set to OFF.

Müsstest Du es nach Deiner Theorie so machen:
set EG_Blind_.*_down TRIGGER;; sleep 1;; set EG_Blind_.*_down TRIGGER

Aber ich würde es so versuchen:
set EG_Blind_.*_down ON;; sleep 2;; set EG_Blind_.*_down OFF
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

KernSani

Und wenn das dann umgesetzt ist und funktioniert, lässt es sich wunderbar im ROLLO Modul komfortabel steuern...
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

stay_tuned

...ich verwende S7_DWrite.
Leider (aufgrund des aktuellen S7 Programs) kann ich mit ON/OFF nicht arbeiten
Aber ich werde es wie von dir vorgeschlagen (set EG_Blind_.*_down TRIGGER;; sleep 1;; set EG_Blind_.*_down TRIGGER) versuchen.
Ansonsten fällt mir gerade ein, dass ich mit einem dummy einen timer mitlaufen lasse
Vielen Dank Otto

Otto123

Naja wenn Du mich fragst, ist die commandref (und damit mein 1:1 Zitat) an der Stelle falsch. Gemeint ist selbstverständlich DWrite.
ZitatS7_DWrite
[EN DE]
This module is a logical module of the physical module S7.
This module is used to set/unset a Bit in ad DB of the PLC.
Note: you have to configure a PLC writing at the physical modul (S7) first.



Definedefine <name> S7_DWrite {db} <DB> <address>

db ... defines where to read. Note currently only writing in to DB are supported.
DB ... Number of the DB
address ... address you want to write. bit number to read. Example: 10.6
Note: the required memory area need to be with in the configured PLC reading of the physical module.
Setset <name> S7_AWrite {ON|OFF|TRIGGER};

Note: TRIGGER sets the bit for 1s to ON than it will set to OFF.
Die Idee mit dem Dummy versteh ich gar nicht  ;D
Aber meine Siematic liegt auch in der Kiste und dich habe davon keine Ahnung. Aber Du kannst keinen Befehl "über eine Zeit" senden. Du kannst einen Befehl senden und der löst irgendetwas mit Zeit aus.
Und Du kannst natürlich einen Befehl x mal wiederholen. Das halte ich für eine "problematische" Betriebsart.  ;)
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

stay_tuned

Danke Otto :-)
Ich geb dir dann Feedback wenn ich zum Testen gekommen bin :-)
mlg

flummy1978

Holla,

ich habe bei mir auch einie Rollos noch über die S7 gestuert. Bei mir ist es so gelöst, dass das von Beta-User Rollo Modul die entsprechenden DB Bits aktiviert und deaktiviert. Damit hast Du dann schon fast alles Funktionen inne, die Du brauchst:

rl_commandDown  set EG_BAD_RO_ROLLO_AUF off; set EG_BAD_RO_ROLLO_ZU on

steuert dann das device "EG_BAD_RO_ROLLO_ZU/AUF":
defmod EG_BAD_RO_ROLLO_AUF S7_DWrite db 100 2.0
attr EG_BAD_RO_ROLLO_AUF DbLogExclude .*
attr EG_BAD_RO_ROLLO_AUF IODev dev_KG_S7_SPS
attr EG_BAD_RO_ROLLO_AUF event-on-change-reading state
attr EG_BAD_RO_ROLLO_AUF group Z_Rollo
attr EG_BAD_RO_ROLLO_AUF icon fts_shutter_all
attr EG_BAD_RO_ROLLO_AUF room Verbindungen->SPS


Im Programm werden dann nur noch die DB Bits auf entsprechende Ausgänge gelegt (nochmal verriegelt).

Der Vorteil davon ist, dass Du dann weiterhin alle angenehmen Funktionen von ROLLO oder später auch von ASC benutzen kannst. D.h. Du kannst mit einem Knopfdruck auch die Rollos nur 40 % fahren lassen z.B. so wie ich das in einem der Räume mache.

Vielleicht hilft dir das auch weiter ;)