Structure Funktionalität

Begonnen von Tobias, 22 August 2012, 11:15:07

Vorheriges Thema - Nächstes Thema

Tobias

                                                   

Hallo,
ich bin gerade am Einlesen und Testen der Structure Funktionalität. Bei der
leider etwas düftigen Doku etwas schwierig ;) Aber warscheinlich nutzen das
Feature nicht viele.

Daher gelcih die Frage ob das möglich ist: ich habe zwar über ein (Doku
angelehnt) "set house off" hinbekommen, alle Devices sind danach auf "off",
aber wenn ein Device wieder auf "on" geht, bleibt das structure Device
"house" immer noch auf "off". Ist das ein Feature oder Bug?

Ziel ist es, das ich den Zustand des Hauses auf einen Blick erfassen
möchte. Also sowie ein Device "on" ist, soll das Structure auch auf "on"
gehen. Wenn alle auf "off" sind soll auch das structureDev auf "off" stehen.

Alternativ: wie kann ich es sonst lösen? Mir fällt da spontan nur unzählige
notifys ein, jeweils eins auf jedem Device. Bei 20,30,40 Devices ziemlich
unübersichtlich....zumal ja alle voneinander voneinander abhängen müssen

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

borsti67

                                                 

Hi,

> Daher gelcih die Frage ob das möglich ist: ich habe zwar über ein (Doku
> angelehnt) "set house off" hinbekommen, alle Devices sind danach auf "off",
> aber wenn ein Device wieder auf "on" geht, bleibt das structure Device
> "house" immer noch auf "off". Ist das ein Feature oder Bug?

Das würde ich mal für normal halten, denn...

> Ziel ist es, das ich den Zustand des Hauses auf einen Blick erfassen möchte.
> Also sowie ein Device "on" ist, soll das Structure auch auf "on" gehen. Wenn
> alle auf "off" sind soll auch das structureDev auf "off" stehen.

es sind natürlich genau so gut Fälle denkbar, in denen es genügt, wenn
EIN Device auf "off" geht, und man den Structure-Status dann auf OFF
haben möchte.

> Alternativ: wie kann ich es sonst lösen? Mir fällt da spontan nur unzählige
> notifys ein, jeweils eins auf jedem Device. Bei 20,30,40 Devices ziemlich
> unübersichtlich....zumal ja alle voneinander voneinander abhängen müssen

Da Du eine recht spezifische Anforderung hast sehe ich nicht viele
andere Möglichkeiten (bin aber auch nicht der große Auskenner ;))...
Hätten alle Deine Devices eine gewisse Namens-Übereinstimmung, könnte
man die per RegEx in weniger notify's zusammenknoten - aber das nehme
ich mal nicht an, denn dann brauchtest Du vermutlich keine Structure.
:-P

Gruß
Torsten

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
cu/2
Borsti
---
FHEM 5.8 auf Synology DS211j (bis 11/17) | FHEM 6.0 auf Raspi Zero W (bis 11/20) | FHEM 6.2 als VM in Synology DS1815+ (ab 11/20)

rudolfkoenig

                                                   

> aber wenn ein Device wieder auf "on" geht, bleibt das structure Device
> "house" immer noch auf "off". Ist das ein Feature oder Bug?

Feature. Structure war nur zum setzen beabsichtigt.


> Alternativ: wie kann ich es sonst lösen?

Diese Aufgabe eignet sich schlecht fuer den Anfaenger.

Man muesste ein notify auf alle Struktur-Geraete haben, und bei jeder
Benachrichtigung pruefen, ob alle anderen Geraete, die zu diese Struktur -
Instanz gehoeren, den gleichen Status haben.  Sinnvollerweise sollte man das
gleich in structure.pm einbauen, als optionales Feature, da es einiges an Last
generiert.

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Tobias

                                                   

Hallo Rudi,

ich möchte mich dran probieren structure.pm zu erweitern.
Funktioniert denn das überhaupt "einfach nur" eine notify_Function
einzubauen? Wird die überhaupt angetriggert wenn ein ganz anderes Device
geändert wird welches aber zur StructureInstanz gehört? Oder müsste da
JEDES Notify aller Devices angepasst werden?

On Wednesday, August 22, 2012 11:52:08 AM UTC+2, Rudolf Koenig wrote:
>
>
> Man muesste ein notify auf alle Struktur-Geraete haben, und bei jeder
> Benachrichtigung pruefen, ob alle anderen Geraete, die zu diese Struktur -
> Instanz gehoeren, den gleichen Status haben.  Sinnvollerweise sollte man
> das
> gleich in structure.pm einbauen, als optionales Feature, da es einiges an
> Last
> generiert.
>

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

rudolfkoenig

                                                   

> Funktioniert denn das überhaupt "einfach nur" eine notify_Function
> einzubauen?

Studieren geht ueber probieren :)


> Wird die überhaupt angetriggert wenn ein ganz anderes Device
> geändert wird welches aber zur StructureInstanz gehört?

Falls _irgendein_ event generiert wird, dann werden _alle_ fhem Geraete der
Reihe nach geprueft, ob deren Modul ein NotifyFn hat, und falls ja, dann wird
die Funktion aufgerufen. Man wird also oefter aufgerufen, als einem das lieb
ist, das Filtern wird der Funktion ueberlassen.

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Tobias

                                                   

Das war der entscheidende Tip. Danke. Werde mich mal ranmachen...Hab ja
genug Beispiele in funktionierenden Modulen

On Wednesday, August 22, 2012 7:07:25 PM UTC+2, Rudolf Koenig wrote:
>
> > Funktioniert denn das �berhaupt "einfach nur" eine notify_Function
> > einzubauen?
>
> Studieren geht ueber probieren :)
>
>
> > Wird die �berhaupt angetriggert wenn ein ganz anderes Device
> > ge�ndert wird welches aber zur StructureInstanz geh�rt?
>
> Falls _irgendein_ event generiert wird, dann werden _alle_ fhem Geraete
> der
> Reihe nach geprueft, ob deren Modul ein NotifyFn hat, und falls ja, dann
> wird
> die Funktion aufgerufen. Man wird also oefter aufgerufen, als einem das
> lieb
> ist, das Filtern wird der Funktion ueberlassen.
>

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

Tobias

                                                   

Hi,
ich war am Wochenende fleißig und habe mal das structure Modul erweitert.
Bei mir funktioniert alles soweit, die Doku mach ich unter der woche fertig.
@Rudi: kannst du mal einen kurzen professionellen Blick drauf werfen?

Was ist dazu gekommen: Sobald die mit einer structure verbundenen Devices
ihr State sich ändert, ändert sich auch die structure mit.
Es gibt ein neues Attr in einer structure: CLIENTSTATE_PRIORITY. Damit kann
man die Priorität der clients angeben.
Gibt mal also an:
attr mystruct clientstate_priority on off
so zeigt die structure sofort dann "on" an, wenn eines der Devices "on"
ist. Anders herum ist es nur dann off, wenn alle devices off sind.
Man kann auch mehrere states angeben, zb: "on|an|offen off|aus|geschlossen
Es ist also egal ob die Devices "on" oder "an" oder "offen" melden, es ist
alles Priorität 1. Ist wichtig wenn man unterschiedliche Devicetypen hat,
ich zb hauptsächlich 1wire Switche (OWSWITCH). Die Structure zeigt immer
den Status  der als erstes der Gruppe angegeben ist, hier also "on" oder
"off" und nicht "offen" oder "geschlossen".
Zusätzlich kann man aber auch den State eines Devices "umschreiben".
Gibt man bei einem Device, welches nur einen Status von "ok" oder "nok"
hat, so kann man mit
attr ok:on nok:off
den state umschreiben. Somit wird bei der structure das "ok" als "on"
gewertet.

Hat man ein Device welches mehrere Readings als state besitzt, zb ein
OWSWITCH-Modul, so kann man mittels
attr A:ON:on A:OFF:off
nur das Raeding des Eingangs A für die Struktur benutzen wobei ON nach on
umgeschrieben wird welches widerrum die structure kennt.

Wie gesagt, die Ergänzung der commandref folgt

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

Tobias

                                                   

Hi,
war das jetzt zu kompliziert das sich keiner traut zu antworten?? ;) ;)

aber mal im ernst, irgendwie wird bei einem Statusupdate der structure kein
notify generiert. Habe longpoll aktiviert und der Status ändert sich nicht,
erst nach einem Reload der Webseite sehe ich es. Wo liegt mein Fehler?

    readingsBeginUpdate($hash);
    readingsUpdate($hash, "state", "on");
    readingsEndUpdate($hash, 0);

    $hash->{STATE} = "on";

Warum ist übrigens der letzte Schritt notwendig? Mit den ersten dreien
ändere ich zwar das reading, aber der STATE eintrag unter NTFY_ORDER ändert
sich selbstständig nicht mit...

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

rudolfkoenig

                                                   

Hallo Tobias,

ich habe versucht Dein Kommenter/Code zu verstehen, ich meine komplette
Beispiele haetten meine Arbeit erleichtert.  Einwaende bzgl. Coding-Style oder
aehnliches habe ich keine, Ausprobiert habe ich Dein Code (noch) nicht.

- clientstate_priority: loest genau das Problem "sind alle Fenster zu".
  Ich finde diesen Namen sehr technisch bzw. nicht intuitiv.
  Den Status auf on bzw. off zu setzen, wenn _alle_ structure-Elemente on bzw.
  off sind, ist nicht moeglich, ich kann mir aber vorstellen, dass man sowas
  auch erwartet. Vielleicht kan man das Problem mit einem besseren Namen
  loesen, oder es in der Doku deutlich herausheben, was nicht moeglich ist.

- attr ok:on nok:off
  Geht gar nicht :), dieses Attribut wird immer auf dem structure-Namen
  gesetzt.  Ich wuerde bevorziehen, wenn Du ganz ohne diesen Attribut mit
  eventMap auskommen koenntest, wenn Du es doch brauchst, dann bitte was neues
  erfinden.

Btw. solche Diskussionen sind in der fhem-developers Gruppe besser aufgehoben.

Gruss,
  Rudi

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Tobias

                                                   

Hallo Rudi,
Namensvorschläge für clientstate_priority nehme ich gerne entgegen.
Aber natürlich istes auch möglich darüber zu setzen ob es auf on oder off
gegen soll wenn alle fenster zu oder offen sind, Also muss das Attr
entweder auf "on off" oder "off on" gesetzt werden.
Bei ersterem müssen alle Fenster zu sein, bei letzterem müssen alle Fenster
offen sein damit die Structure umschaltet.

Für dass zweckentfremdete Att denke ich mir etwas neues aus, eventMap geht
nicht weil ich pro structure etwas angeben muss und zusätzlich noch ein
bestimmtes Reading. Ein 1wire Baustein hat u.U. mehrere Ports die in
unterschiedlichen Structuren sein können).

Doku bin ich fast fertig, nur von der firma aus kann ich es hier nicht
hochladen.... da mault der proxy..

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

rudolfkoenig

                                                   

> Bei ersterem müssen alle Fenster zu sein, bei letzterem müssen alle Fenster
> offen sein damit die Structure umschaltet.

Genau. Aber wenn ein Fenster auf, und eins zu ist, dann steht es auf auf oder
zu, ein Status unbekannt o.ae. gibt es nicht.

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com