vorschau: neues modul stateMachine

Begonnen von justme1968, 04 April 2016, 21:26:30

Vorheriges Thema - Nächstes Thema

pst

Habe dieses Modul entdeckt und finde die Idee dahinter super.
Nun wollte ich es an einem einfachen Beispiel testen... klappt aber nicht.
Was ich habe:

Internals:
   DEF        Switch_Sonnenaufgang,Switch_Sonnenuntergang,Switch_Tag,Switch_Nacht hueBridge1_.*
   NAME       MODUS
   NR         315
   NTFY_ORDER 50-MODUS
   STATE      OFF
   TARGET     hueBridge1_.*
   TYPE       stateMachine
   Content:
     Switch_Nacht 1
     Switch_Sonnenaufgang 1
     Switch_Sonnenuntergang 1
     Switch_Tag 1
   DEVICES:
     Switch_Sonnenaufgang
     Switch_Sonnenuntergang
     Switch_Tag
     Switch_Nacht
   Helper:
     Transitions:
       ABEND:
         HASH(0x27889f8)
       MORGEN:
         HASH(0x2788920)
       NACHT:
         HASH(0x2788b78)
       TAG:
         HASH(0x2788ab8)
Attributes:
   start      MORGEN
   stateFn    MORGEN
   transitions {
MORGEN => [ { event => '$3:on', action => 'set $TARGET off',    newState => 'TAG'     },],
ABEND  => [ { event => '$4:on', action => 'set $TARGET off',    newState => 'NACHT'   },],
TAG    => [ { event => '$2:on', action => 'set $TARGET on',     newState => 'ABEND'   },],
NACHT  => [ { event => '$1:on', action => 'set $TARGET on',     newState => 'MORGEN'  },],
}

Die 'Switch_xxxx'es sind dummys. Ich möchte über events (hier das schalten eines dummys) den state of the day ändern.
Als Action habe ich gerade nur das an/aus machen von Lampen. Hier würde ich dann noch Funktionen rufen wollen.
Leider reagiert hier nix. Im log finde ich:
2017.03.28 09:54:04 2: MODUS: unhandled state: OFF
2017.03.28 09:58:37 2: MODUS: unhandled state: Unknown command MORGEN, try help.

Nun meine Fragen:
- braucht es den state ON/OFF zwingend in den transitions (in den bsps. ist das so).
- kann man in action auch Functions rufen
- wie greife ich auf den state zu innerhalb von Functions (wahrscheinlich mit readingsVal())
- in meinem Fall würde die stateMachine ja nie enden... geht das?
- ist das event richtig def. (bei dummy $1 (mit on/off) mit '$1:on'... oder ist das 0/1)

Über eine Antwort würde ich mich sehr freuen.
Viele Grüsse aus dem Schwarzwald.
Stephan

Prof. Dr. Peter Henning

Ernst gemeinter Tipp: Erst einmal etwas mehr mit den Grundlagen von FHEM vertraut machen.

LG

pah

chefpro

Hallo,

Sorry, dass ich den alten Thread wieder raus hole. Es gibt aber Neuigkeiten.

Ich habe mal ein PR für das Repo gemacht.
Wenn das dann gemerged ist sollten "timed transitions" funktionieren.

Das heißt es funktioniert dann eine transition anzulegen die nur einen Timeout hat aber kein Event.

Wenn im angegebenen Zeitraum dann keine andere Transition triggert, wird der Status gewechselt.

Beispiel: "{ timeout => 10, action => 'set something OFF', newState => 'OFF' },"

Grüße, Peter