(gelöst) notify verfängt sich in schleife

Begonnen von WarLord, 10 Juni 2015, 17:42:22

Vorheriges Thema - Nächstes Thema

WarLord

Hi ich hab da ein kleines Problem.
Ich hab nen Raspberry mit TFT im Schlafzimmer, denn ich über Fhem schalte.
Nachdem einfach "Strom weg" nicht das beste ist, fahre ich ihn über ssh erst runter und nehme dann den Strom weg (Mit dummy gelöst). Soweit geht alles.

Da ich auch noch einen Hardwareschalter zum einschalten wollte, soll der Hardwareschalter denn Dummy einschalten.
Wenn ich aber nun über den Dummy ausschalte, hängt er in ner schleife und fährt hoch und runter.
Was durch den sleep irgendwie klar ist. Problem ist also TVon1. Nur wüsste ich nicht wie ich es besser lösen könnte.

define RaspTV dummy
attr RaspTV devStateIcon on:tft off:tft_n
attr RaspTV fp_A 560,303,0,,
attr RaspTV room Schlafzimmer
attr RaspTV setList on off

define TVon notify RaspTV:on set SchalterTVSchlafzimmer on
define TVon1 notify SchalterTVSchlafzimmer:on set RaspTV on

define TVoff notify RaspTV:off "/usr/bin/ssh xx@@xxx.xxx.x.xx poweroff";; sleep 20;; set SchalterTVSchlafzimmer off
define TVoff2 at *01:00:00 set RaspTV off


Hat da einer ne Idee wie man das Problem lösen könnte?

Schonmal Danke für die Ideen!
FHEM auf RaspberryPi B+
HMLAN Adapter + Div HM Komponenten

Hollo

#1
Dein Code ist mir irgendwie unverständlich, da vermutlich unvollständig.
Wenn RaspTV gleichzeitig zum Ein-/Ausschalten per fhem sein soll,
kannst Du den nicht gleichzeitig mit Ausschalten nochmal verzögert ausschalten.

Der Schlafzimmer-Schalter soll also nur EINschalten?
Dann konfigurier den doch als Taster (im Zweifel mit eventMap /on-for-timer 2:on/ ).
Dann mittels notify durch Fhem oder Taster den TV einschalten.

define TVon notify (fhemTV:on|SchalterTVSchlafzimmer:on) set RaspTV on


Machst Du über fhem wieder aus, geht auch der TV aus.

define TVoff notify fhemTV:off "/usr/bin/ssh xx@@xxx.xxx.x.xx poweroff";; sleep 20;; set RaspTV off


Wofür soll denn Dein "stündlich ausschalten at" sein?
FHEM 6.x auf RPi 3B Buster
Protokolle: Homematic, Z-Wave, MQTT, Modbus
Temp/Feuchte: JeeLink-Clone und LGW mit LaCrosse/IT
sonstiges: Linux-Server, Dreambox, "RSS-Tablet"

Paddinho


define TVon notify RaspTV:on set SchalterTVSchlafzimmer on
define TVon1 notify SchalterTVSchlafzimmer:on set RaspTV on


Bin leider auch noch FHEM-Einsteiger aber ich könnte mir vorstellen diese beiden Zeilen auch zu einer Endlosschleife führen könnten.
Durch Notify's wird ja auf Events reagiert und durch Notify "TVon" SET ... ON wird Notify "TVon1" ausgeführt und umgekehrt

WarLord

#3
Hi

unvollständing nur soweit das die Konfiguration des HM Schalter (SchalterTVSchlafzimmer er ist ein HomeMatic Funk-Schaltaktor 1fach, Unterputzmontage) fehlt.

gedacht ist es so:

Im Floorplan ein Icon zum an und aus schalten.
Da ich denn Strom nicht einfach wegnehmen will, hab ich dafür den Dummy (RaspTV) definiert. Wegen ssh und so.

Am Schaltaktor (SchalterTVSchlafzimmer) ist aber auch ein Taster angeschlossen. Der beim betätigen den Schaltaktor natürlich aktiviert und den Dummy auf on schalten soll, um auf dem Floorplan alles wieder aus zu schalten.
Am Schaltaktor hängen der TFT und der Raspberry.

Das "at" ist dazu da um den Raspberry spätestens um 1 uhr auszuschalten, falls man schon eingeschlafen ist


@Paddinho:  Genau da ist das Problem, nur weis ich noch nicht wie ich dieses lösen kann ohne ne schleife zu erzeugen
FHEM auf RaspberryPi B+
HMLAN Adapter + Div HM Komponenten

Hollo

Zitat von: WarLord am 11 Juni 2015, 09:39:17
...unvollständing nur soweit das die Konfiguration des HM Schalter (SchalterTVSchlafzimmer er ist ein HomeMatic Funk-Schaltaktor 1fach, Unterputzmontage) fehlt...
Genau DAS ist aber die wichtigste Information!   ;D

Du hast im Prinzip nur genau 1 Gerät.
Bei einem HM-Schaltaktor hast Du nach der Konfiguration direkt die on/off Tasten im Webfrontend.
Der angeschlossene Taster wirkt ebenfalls DIREKT auf den Aktor; daher kannst Du dazwischen m.E. auch keine Verzögerung einbauen.
FHEM 6.x auf RPi 3B Buster
Protokolle: Homematic, Z-Wave, MQTT, Modbus
Temp/Feuchte: JeeLink-Clone und LGW mit LaCrosse/IT
sonstiges: Linux-Server, Dreambox, "RSS-Tablet"

WarLord

Oh, ok dann hier der Komplette code:
define SchalterTVSchlafzimmer CUL_HM 368E35
attr SchalterTVSchlafzimmer userattr building building_map room_map structexclude
attr SchalterTVSchlafzimmer IODev HMLAN1
attr SchalterTVSchlafzimmer autoReadReg 1_restart
attr SchalterTVSchlafzimmer devStateIcon on:tft off:tft_n
attr SchalterTVSchlafzimmer expert 2_full
attr SchalterTVSchlafzimmer firmware 2.5
attr SchalterTVSchlafzimmer model HM-LC-SW1-FM
attr SchalterTVSchlafzimmer peerIDs 00000000,
attr SchalterTVSchlafzimmer room _System
attr SchalterTVSchlafzimmer serialNr MEQ0071468
attr SchalterTVSchlafzimmer subType switch
attr SchalterTVSchlafzimmer webCmd statusRequest:toggle:on:off
#
define RaspTV dummy
attr RaspTV devStateIcon on:tft off:tft_n
attr RaspTV fp_A 560,303,0,,
attr RaspTV room Schlafzimmer
attr RaspTV setList on off
#
define TVon notify RaspTV:on set SchalterTVSchlafzimmer on
define TVon1 notify SchalterTVSchlafzimmer:on set RaspTV on
define TVoff notify RaspTV:off "/usr/bin/ssh xxxx@@xxx.xxx.x.xx poweroff";; sleep 20;; set SchalterTVSchlafzimmer off
define TVoff2 at *01:00:00 set RaspTV off



Zitat von: Hollo am 11 Juni 2015, 17:44:42
Genau DAS ist aber die wichtigste Information!   ;D

Du hast im Prinzip nur genau 1 Gerät.
Bei einem HM-Schaltaktor hast Du nach der Konfiguration direkt die on/off Tasten im Webfrontend.
Der angeschlossene Taster wirkt ebenfalls DIREKT auf den Aktor; daher kannst Du dazwischen m.E. auch keine Verzögerung einbauen.

Das heist nun?
FHEM auf RaspberryPi B+
HMLAN Adapter + Div HM Komponenten

Paddinho

Ich versuch dein Problem mal zu beschreiben.

Die hast einen HM-Taster mit dem du deinen Raspi ein- oder auschalten willst.
Zudem willst du aber auch über einen "dummy"-Schalter den Raspi im Floorplan ein- und ausschalten.

Wenn du den den HM-Taster zum Auschalten betätigst willst du mit dem notify bezwecken das auch der dummy-Schalter den Status off erhält (und natürlich umgekehrt).
Ist das richtig so?

Ich würde sagen warum dann nicht ganz auf dummy verzichten und direkt den HM-Taster im Floorplan anzeigen?

WarLord

Nicht ganz.

einschalten will ich über dummy oder HM-Taster

ausschalten nur über Dummy, aber um über dummy ausschalten zu können muss dieser auch auf "on" sein wenn der HM-Taster betätigt wurde.

Auf den Dummy kann ich nicht verzichten wegen dem herunterfahren des Raspberry.
FHEM auf RaspberryPi B+
HMLAN Adapter + Div HM Komponenten

Paddinho

Versuch mal mit "setstate" zu arbeiten. Das sollte den Status des anderes Schalters umsetzen, aber keine Ereignis mehr auslösen (was bei dir ja durch die notify's in Endlosschleife endet)

Versuch mal sowas in der Art (ohne Gewähr)

define State_SchalterTVSchlafzimmer notify RaspTV:.* {fhem "setstate SchalterTVSchlafzimmer $EVENT"}

define State_RaspTV  notify SchalterTVSchlafzimmer:.* {fhem "setstate RaspTV $EVENT"}

Hollo

Wenn Du mit dem Taster des Aktors NUR EINSCHALTEN willst, sollte das gehen.
Dazu musst Du nur meinen ersten Code etwas anpassen.

mittels notify durch Dummy oder Taster den TV-Aktor und den Dummy einschalten.

define TVon notify (RaspTV:on|SchalterTVSchlafzimmer:on) set SchalterTVSchlafzimmer,RaspTV on


Machst Du über fhem wieder aus, geht auch der TV aus.

define TVoff notify RaspTV:off "/usr/bin/ssh xx@@xxx.xxx.x.xx poweroff";; sleep 20;; set SchalterTVSchlafzimmer off

FHEM 6.x auf RPi 3B Buster
Protokolle: Homematic, Z-Wave, MQTT, Modbus
Temp/Feuchte: JeeLink-Clone und LGW mit LaCrosse/IT
sonstiges: Linux-Server, Dreambox, "RSS-Tablet"

Paddinho

Zitat von: Hollo am 12 Juni 2015, 09:15:13
define TVon notify (RaspTV:on|SchalterTVSchlafzimmer:on) set SchalterTVSchlafzimmer,RaspTV on

Sorry für meine Frage (bin selbst FHEM-Anfänger) aber würde dies nicht auch wieder zu einer Endlosschleife führen?

Durch das Ausführen des Notify (RaspTV oder SchalterTVSchlafzimmer -> ON) führt FHEM doch den SET-Befehl aus in dem ja wieder der Status des gleichen Device auf ON gesetzt wird.
Somit müsste normalerweise doch wieder das gleiche Ereignis ausgelöst werden usw...
Oder wird sowas durch FHEM abgefangen?

Hollo

Die Befürchtung habe ich auch, muss man halt mal probieren und dann im Eventmonitor beobachten.
Wäre sonst aber die einfachste Variante.
FHEM 6.x auf RPi 3B Buster
Protokolle: Homematic, Z-Wave, MQTT, Modbus
Temp/Feuchte: JeeLink-Clone und LGW mit LaCrosse/IT
sonstiges: Linux-Server, Dreambox, "RSS-Tablet"

WarLord

define TVon notify (RaspTV:on|SchalterTVSchlafzimmer:on) set SchalterTVSchlafzimmer,RaspTV on

damit funktionierts! Keine schleife mehr. Besten Dank!
FHEM auf RaspberryPi B+
HMLAN Adapter + Div HM Komponenten

Hollo

Super.   8)
Danke für die Rückmeldung; evtl. bitte noch den Thread auf "gelöst" setzen.
FHEM 6.x auf RPi 3B Buster
Protokolle: Homematic, Z-Wave, MQTT, Modbus
Temp/Feuchte: JeeLink-Clone und LGW mit LaCrosse/IT
sonstiges: Linux-Server, Dreambox, "RSS-Tablet"