[Erledigt] - Mein Anfang mit structure

Begonnen von maxritti, 17 Januar 2014, 16:53:26

Vorheriges Thema - Nächstes Thema

maxritti

Hallo zusammen,

so langsam wächst mein FHEM immer weiter, auch Dank Eurer Hilfe.

Jetzt ist es soweit, dass ich mir mal eine Structure definieren wollte um weiter Notifies usw. zu vereinfachen.
Irgendwie hänge ich da aber gerade.

Und zwar habe ich mal 3 Dummies definiert, die irgendwann irgendwelche Werte annehmen können.
Um diese einfacher auswerten zu können, habe ich dann eine Structure erstellt.

define myStruct structure myStructType myDum1 myDum2 myDum3

Habe ich das jetzt in der Commandref richtig gelesen, dass ich einen der in den Dummies befindlichen Elemente löschen kann?
Weil das wäre so meine ich für mich sinnvoll, da ich später die Structure quasi dynamisch haben möchte.

Also ein "delstruct myStruct myDum1" würde myDum1 entfernen.
Gebe ich den Befehl ein und schaue mir die Structure noch mal an, steht allerdings immer noch alle 3 Dummies drin.

Bug oder Feature?  :P
Oder das Problem vor dem Rechner? :)

maxritti

Keiner eine Idee, weshalb das destruct nicht klappt?

Ich habe jetzt erst mal einen Workaround umgesetzt. Ich definiere mir einfach bei der Aktion, die passiert eine Structure welche die notwendigen Dummies beinhaltet. Danach lösche ich die wieder.

Ich weiß nur nicht, was sinniger bzw performanter ist?

BeamterAD

ich kann zwar nicht viel dazu sagen,aber vielleicht hilft es ja wenn du schreibst was du damit vorhast,bzw was du realisieren willst,vl  gibt es für deinen Fall ja schon einen fertigen Codeschnipsel der nur angepasst werden muß
mfg

maxritti

Okay, mein Ziel ist es derzeit quasi eine Alarmanlage zu bauen.
Ansatz ist der FHEM Wiki Eintrag.
Daher "normiere" ich meine Melder, welche Tür und Fensterkontakte und Bewegungsmelder sind, damit ich letztendlich die gleichen Werte auswerten kann. Dafür setzen diese Kontakte Ihre Werte (open, closed, motion usw) nach "offen" und "zu".
Damit ich nun nicht jeden einzelnen Dummy auswerten muss, wollte ich eine structure basteln, welche dann eben "zu" = "keiner drinnen" oder "undefined" wenn ein Melder sich gemeldet hat bauen. Und dann ein notify über diese Structure und gut ist.

Nun soll es aber einen "Scharf" Status und einen "Scharf intern" geben. Wobei dann halt unterschiedliche Melder das notify auslösen sollen. Da dachte ich halt, dass ich die Structure, welche letztendlich den Alarm auslöst mit unterschiedlichen Dummies befüllen zu können.

Und da scheitert es so wie es aussieht.
Denn IMHO klappt der Befehl "delstruct" wie in der Command Ref beschrieben nicht.
Drei Dummies, in eine structure gesetzt und der "delstruct...." löscht einen Dumme nicht.

That's the problem.

Puschel74

Hallo,

ZitatDafür setzen diese Kontakte Ihre Werte (open, closed, motion usw) nach "offen" und "zu".
Was du mit "eventMap" machst nehme ich mal an.

Ich weiß nicht ob structure auf den gemappten Zustand schaut oder auf den tatsächlichen.

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

BeamterAD

geht das nicht auch damit:
Zitatdefine Einbruch notify Bewegungsmelder.* usw ...
das   .* bewirkt das auf alles geachtet wird was mit Bewegungsmelder beginnt,wenn also einer sich rührt - Alarm






maxritti

Zitat von: Puschel74 am 18 Januar 2014, 11:07:39
Hallo,
Was du mit "eventMap" machst nehme ich mal an.

Ich weiß nicht ob structure auf den gemappten Zustand schaut oder auf den tatsächlichen.

Grüße

Nope.
Ganz naiv habe ich das mal so codiert:

define act_WC_Bewegungsmelder_on notify WC_Bewegungsmelder:motion {if ((Value("Anlage_status") eq "scharf intern") || (Value("Anlage_status") eq "scharf")){fhem("set Melder_EG_WC offen")}}

D.h. mit attr eventMap kann ich die dinger einfach so umschreiben?
Das wäre ja cool.

Zitat von: BeamterAD am 18 Januar 2014, 11:11:35
geht das nicht auch damit:  das   .* bewirkt das auf alles geachtet wird was mit Bewegungsmelder beginnt,wenn also einer sich rührt - Alarm

Da müsste ich eben für jedem Melder so ein notify bauen.
Wobei mache ich ja quasi jetzt ja auch, wo ich die eigentlichen events versuche zu normieren.

Hm, da gibt es wohl noch Verbesserungspotential.

Wobei die eigentliche Frage:

Kann denn mal jemand folgendes Befehlsfolge ausprobieren?

define myDum1 dummy
define myDum2 dummy
define myDum3 dummy
define myStruct structure myStructType myDum1 myDum2 myDum3


Dann sind myDum1, myDum2 und myDum3 in der Structure

Und wenn ich die Command Referenz nicht ganz falsch lese, müsste doch ein

delstruct myStruct myDum1

aus der Structure entfernen oder?

Bei mir ist myDum1 danach aber immer noch drin.

Thorsten Pferdekaemper

#7
Hi,
ich glaube, das ist nur ein Anzeigeproblem in der Oberfläche. Wenn ich das ausprobiere, dann ergibt ein "list myStruct" das Folgende.

Internals:
   ATTR       myStructType
   CFGFN     
   DEF        myStructType myDum1 myDum2 myDum3
   NAME       myStruct
   NR         4107
   NTFY_ORDER 50-myStruct
   STATE      ???
   TYPE       structure
   Content:
     myDum2     1
     myDum3     1
   Helper:
     Bm:
       Structure_define:
         cnt        1
         mAr        HASH(0x9d11c0); myStruct structure myStructType myDum1 myDum2 myDum3
         max        8
         tot        8
       Structure_notify:
         cnt        5
         mAr       
         max        0
         tot        0
       Structure_set:
         cnt        3
         mAr        HASH(0x9d11c0); myStruct; ?
         max        5
         tot        11
Attributes:

Unter "Content" ist myDum1 nicht mehr aufgelistet. Der andere Kram scheint nur die anfängliche Definition wiederzugeben.
Ich habe auch mal "set myStruct on" ausprobiert. Das wird dann an myDum2 und myDum3 weitergegeben, aber nicht an myDum1. Ich denke mal, dass das funktioniert.
Gruß,
   Thorsten
FUIP

maxritti

Danke Dir für den Test.
In der Tat ist bei dem list dann auch myDum1 bei mir weg.

Könnte dann bitte ein Mod das Thema hier in den richtigen Bereich schieben?
Offensichtlich liegt hier in der Tat ein Fehlerchen in der Oberfläche vor.


Und dann ein wenig Off-Topic.

Mein Code ist jetzt eine ganze Menge kürzer geworden. :)
Dank eventMap und direkten Notify klappt alles wieder wie gewünscht, halt nur kürzer.


Danke Euch für die rege Diskussion