Autor Thema: [GELÖST]setreading verschachteln  (Gelesen 490 mal)

Offline meddie

  • Full Member
  • ***
  • Beiträge: 274
[GELÖST]setreading verschachteln
« am: 10 April 2018, 23:43:28 »
Hallo zusammen,

ich habe heute meinen ersten Fensterdrehgriffkontakt in Betrieb genommen, nun möchte ich mir zu einem über Chromecast ansagen lassen welche Fenster offen sind und am TabletUI die Anzahl offener Fenster anzeigen lassen. Dazu habe ich von CoolTux eine sub für die 99_myUtils.pm verwendet, diese funktioniert auch soweit, wenn ich diese sub ausführe liefert die alle Fenster die offen sind.
Nun habe ich einen Dummy duFensterOffen und ein DOIF angelegt, wenn sich der Status aller Fensterdrehgriffkontakte auf open, closed, tilted ändert soll einfeich ein setreading ausgeführt werden und die offenen Fenster in den Dummy schreiben.

Ich habe das DOIF wie folgt angelegt:
 
   DEF        ([".*:(open|tilted|closed)$"]) (setreading duFensterOffen offene_Fenster [{statusFensterOffen()}])
 

Nun habe ich das Problem, wenn ich den Griff drehe wird im Dummy als Reading nicht das offene Fenster sonder der Aufruf der Sub eingetragen sprich dort steht dann das hier drin
Internals:
   CFGFN     
   NAME       duFensterOffen
   NR         4992
   STATE      ???
   TYPE       dummy
   READINGS:
     2018-04-10 23:24:13   offene_Fenster  [{statusFensterOffen()}]
Attributes:

Könnt Ihr mit bitte helfen wo mein Fehler liegt, warum wird nicht das sub aufgerufen sonder einfach nur mein Befehl da eingetragen?
Vielen Dank
gruß Eddie
« Letzte Änderung: 12 April 2018, 23:23:08 von meddie »

Offline CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 21692
Antw:setreading verschachteln
« Antwort #1 am: 11 April 2018, 06:43:09 »
Hallo Eddie,

Ist jetzt nur geraten, muss nachher  mal Commandref zu DOIF schauen, aber nimm mal die eckigen Klammern vor dem Subaufruf weg.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://paypal.me/pools/c/8gULisr9BT
FHEM GitHub: https://github.com/fhem/
kein Support für cfg Editierer

Offline meddie

  • Full Member
  • ***
  • Beiträge: 274
Antw:setreading verschachteln
« Antwort #2 am: 11 April 2018, 09:00:13 »
Hi CoolTux,

danke für Deine Sub übrigens :-)

ich habe schon alle möglichen Varianten verwendet, mit und ohne sämtliche Klammern, es wird trotzdem jedesmal nur der Aufruf als Reading eingetragen aber nicht die sub ausgeführt.

Danke
VG Eddie

Offline CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 21692
Antw:setreading verschachteln
« Antwort #3 am: 11 April 2018, 09:08:09 »
([".*:(open|tilted|closed)$"]) ({ fhem('setreading duFensterOffen offene_Fenster ' . statusFensterOffen() })

Probiere bitte einmal so.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://paypal.me/pools/c/8gULisr9BT
FHEM GitHub: https://github.com/fhem/
kein Support für cfg Editierer

Offline CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 21692
Antw:setreading verschachteln
« Antwort #4 am: 11 April 2018, 09:12:01 »
Schau mal, das habe ich gerade noch in der Commandref gefunden

Zitat
Anwendungsbeispiel: Die Endzeit soll abhängig von der Beginnzeit mit Hilfe einer eigenen Perl-Funktion, hier: OffTime(), bestimmt werden. begin und end sind Dummys, wie oben definiert:

define di_time DOIF ([[begin]-[end]]) (set lamp on, set end {(OffTime("[begin]"))}) DOELSE (set lamp off)
« Letzte Änderung: 11 April 2018, 09:36:57 von CoolTux »
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://paypal.me/pools/c/8gULisr9BT
FHEM GitHub: https://github.com/fhem/
kein Support für cfg Editierer

Offline meddie

  • Full Member
  • ***
  • Beiträge: 274
Antw:setreading verschachteln
« Antwort #5 am: 11 April 2018, 09:33:01 »
Dannke CoolTux,

ich werde es am Mittag probieren wenn ich zu Hause bin
Danke
VG Eddie

Offline meddie

  • Full Member
  • ***
  • Beiträge: 274
Antw:setreading verschachteln
« Antwort #6 am: 11 April 2018, 22:49:46 »
Hey CoolTux,

also es funktioniert beinahe :-D. Nein im Ernst die Sub Routine wird nun aufgerufen und wenn ein Fenster offen wird das Reading des Dummies auch mit dem offenen Fenster befüllt. Allerdings wenn alle Fenster geschlossen sind, liefert die Sub ja nichts zurück und damit vermute ich hat das DOIF ein Problem beim setzen des Readings
Hier sehe ich folgenden Fehler:
{ fhem('setreading duFensterOffen offene_Fenster ' . statusFensterOffen() )}: Usage: setreading <name> <reading> <value> where <name> is a single device name, a list separated by comma (,) or a regexp. See the devspec section in the commandref.html for details.
Der Fehler kommt nur wenn der FDK auf geschlossen gedreht wird.

Ich bin wieder ratlos.
Danke
Gruß Eddie

EDIT:
Ich glaube ich blicket ein kleines Bißchen durch, die Subroutine triggert nur Threestatesensoren an die !=closed sind. Das heißt wenn alle Fenster zu sind, liefert die Sub kein Wert zurück. Daher der Fehler. Jetzt muss ich nur noch etwas machen damit das nicht passiert. Und da fehlt mir die Idee
« Letzte Änderung: 11 April 2018, 23:05:42 von meddie »

Offline meddie

  • Full Member
  • ***
  • Beiträge: 274
Antw:setreading verschachteln
« Antwort #7 am: 11 April 2018, 23:18:05 »
ich habs!!!
([".*:(open|tilted|closed)$"]) ({if (statusFensterOffen() ne "") {fhem('setreading duFensterOffen offene_Fenster ' . statusFensterOffen() )} else {fhem('setreading duFensterOffen offene_Fenster keines')}})

Offline CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 21692
Antw:setreading verschachteln
« Antwort #8 am: 12 April 2018, 03:53:19 »
Super.  :)
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://paypal.me/pools/c/8gULisr9BT
FHEM GitHub: https://github.com/fhem/
kein Support für cfg Editierer
Gefällt mir Gefällt mir x 1 Liste anzeigen

 

decade-submarginal