Kein Refresh bei setzten von setList

Begonnen von roli, 30 Dezember 2014, 13:12:47

Vorheriges Thema - Nächstes Thema

roli

Offensichtlich scheint es keinen korrecten refresh zu geben, wenn ich ein Wert eines  dummy  mit  attribute  setlist  während des Ablaufs verändere
z.b. durch einen timer  mit AT.

define D_1 dummy
  attr D_1 devStateIcon .*SCHARF:general_an@red .*BEREIT:general_an@green .*:general_aus
  attr D_1 setList          Status:AUS,BEREIT,SCHARF,Test
  attr D_1 webCmd       Status

ein
define aaa at +00:00:02   set D_1  Staus SCHARF

setzt zwar das Icon  und man sieht es dass es geändert ist,  aber  der aktuell sichtabre List-Eintrag bleibt unverändert !!  Erst nach refresh  ist er aktuell sichtbar
!!  wie kann ich dies veranlassen dass dies richtig tut .

Bei  longpoll 0    -- ändert sich das Icon nicht   -- nur bei 1 (default )  -- aber halt die Liste nicht -- echt schlecht !
FHEM auf Debian (RASPI), 2 * CUL868/433 *  FS20 STR, 2 * HMS100 T, 2 * , 1* FS20 SU, 2 *  FS20 SM8, 2 ; 1-wire Temp,i2c Bus; ESP32 WROOM; ESP8266; Arduino
Sonnenbatterie Eco8;Elektro  Nachspeicher-Ofen Ladesteuerung,
Haus Lüftung,
Integration von HardwareAlarmanlag

UliM

RPi4/Raspbian, CUL V3 (ca. 30 HomeMatic-devices), LAN (HarmonyHub, alexa etc.).  Fördermitglied des FHEM e.V.

roli

Sagt mir jetzt nicht was das Problem ist. Könnte ich einen refresh selbt veranlassen, dann hätte ich eventuell einen workaround.
Ansonsten vermute ich ein Problm in einem module - eventuell longpoll.  Komisch ist nur, dass das Icon geändert wird.  Ev. eine Zeitl. Sache
FHEM auf Debian (RASPI), 2 * CUL868/433 *  FS20 STR, 2 * HMS100 T, 2 * , 1* FS20 SU, 2 *  FS20 SM8, 2 ; 1-wire Temp,i2c Bus; ESP32 WROOM; ESP8266; Arduino
Sonnenbatterie Eco8;Elektro  Nachspeicher-Ofen Ladesteuerung,
Haus Lüftung,
Integration von HardwareAlarmanlag

ChrisD

Hallo,

Kannst du versuchen das at so zu ändern:
define aaa at +00:00:02 set D_1 Status SCHARF;;setreading D_1 Status SCHARF;;
Dadurch sollte das für die Aktualisierung per Longpoll nötige Event erzeugt werden.

Grüße,

ChrisD

rudolfkoenig

Falls man statt Status state verwendet, dann funktioniert es.

Achtung mit Ausdruecken wie "echt schlecht" und den vielen Ausrufezeichen: der Beitrag kann schnell dem geistigen SPAM Filter des Entwicklers zum Opfer fallen.

roli

Na ja  .. ich bin zwar Anfänger in FHEm aber sonst nicht unbedingt  und es ist schon eine ständiges ausprobieren was geht was nicht.

Mit dem Beispiel von ChrisD tut es  --- ABER.  Offensichtlich wird durch ;; das setreading sofort ausgeführt   und das set durch  das at

Laut docu finde ich:

Z.B. schaltet die erste der folgenden Befehlszeilen die Lampe 1 nur/erst zur Uhrzeit 07:00 Uhr aus,
die Lampe 2 aber sofort und die zweite Befehlszeile schaltet Lampe 1 und 2 um 7:00 Uhr gleichzeitig aus.
   
define lampoff at 07:00 set Lamp1 off; set Lamp2 off
define lampoff at 07:00 set Lamp1 off;; set Lamp2 off

Eingefügt aus <http://fhem.de/commandref_DE.html>

Also  wenn ich folgedes aufrufe:

  fhem("define aaa at +00:00:40  set D_t $value;;setreading D_t $value");;\

dann hat das at immer nur den ersten Befehl  und das setreading wird sofort ausgeführt -- wie schaffe ich es dem "fhem"   commando  beizubringen, dass
er beide Befehle ausführt.

Wahrscheinlich alles  einfach -- aber ich schnall es nicht!  Viele Beispiele beziehen sich auf entsprechende Beispile wie oben beschrieben, doch leider fehlt dann immer das Beispiel wenn ich es von Perl  mittels FHEM aufrufe -- es verhält sich dann komplett anders.  Aber sicher erklärlich.

Ebenfalls ist dies wohl beim fhem auch so eine Sache mit den leerzeichen. Genau dies hält unheimlich auf.
Habe eigenes  pm  modul gemacht  -- prompt kommen beim start   redefined errors, da aus welchen gründen auch immer das modul wohl 2 mal geladen wird
usw.

Trotzdem sicher alles lobenswert, aber nach 7 vollen Tagen am PC wollte man etwas weiter sein  und kann den frust nicht mehr verbergen. Oft sind es Kleinigkeiten denke ich, aber leider findet man hierzu zu wenig beispiele und teilweise sind Dinge so veraltet dass sie dann auch nicht mehr funktionieren.

Ich habe jetzt schon des öfteren gesehen, dass die Entwickler jedes Wort auf die Waagschale legen und man sich wohl sehr zurückhalten muss. Schade eigentlich.
Falls ich es mal schaffe meine kleine Lösung lauffähig zu haben, so kann ich eventuell auch mal was konstruktives beibringen. Mittlerweile bin ich aber noch am dokumentieren von Stolpersteinen und hoffe ich komme mit allem etwas weiter.

FHEM auf Debian (RASPI), 2 * CUL868/433 *&nbsp; FS20 STR, 2 * HMS100 T, 2 *&nbsp;, 1* FS20 SU, 2 *&nbsp; FS20 SM8, 2 ; 1-wire Temp,i2c Bus; ESP32 WROOM; ESP8266; Arduino
Sonnenbatterie Eco8;Elektro&nbsp; Nachspeicher-Ofen Ladesteuerung,
Haus Lüftung,
Integration von HardwareAlarmanlag

ChrisD

Hallo,

Die Definition die ich vorgeschlagen habe funktioniert wenn sie direkt in der Kommandozeile von FHEM eingegeben wird. Wenn du sie mittels fhem(...) verwenden möchtest musst du jedes einzelne ; innerhalb vom define verdoppeln:
fhem("define aaa at +00:00:40 set D_t SCHARF;;;;setreading D_t Status SCHARF")

Alternativ kannst du die von Rudolf Koenig vorgeschlagene Lösung einsetzen, die keine 'Verrenkungen' benötigt:

define D_1 dummy
attr D_1 devStateIcon .*SCHARF:general_an@red .*BEREIT:general_an@green .*:general_aus
attr D_1 setList state:AUS,BEREIT,SCHARF,Test
attr D_1 webCmd state


Damit kannst du einfachdefine aaa at +00:00:02 set D_1 SCHARFresp.fhem("define aaa at +00:00:40 set D_1 $value");;\verwenden.

Grüße,

ChrisD

roli

Chris,
danke für die Lösung. Ich war heute morgen dann selbst darauf gekommen und schön jetzt hier die Bestätigung zu sehen. Es stimmt, dass ich auch direkt "state" verwenden kann.
Ich hatte ein Dummy Beispiel, welches  2  setListen  verwendet hat -- D.h. 2 Auswahlmöglichkeiten und dabei wurde vor die Liste immer der Namen der Liste angezeigt. Ich hab es dann
mit einer Liste nicht getestet und deshalb nicht gesehen dass bei Verwendung von "state"  vor der Liste nichts angezeigt wird. Ich wollte kein state im UI sehen.

Jetzt kann ich mich entscheiden ob ich es so lasse oder auf state wechsle. Unten tut immer -- egal welche Liste man hat -- so wie ich es sehe wird dann immer ein "reading" für state erzeugt
welches den Listennamen gefolgt vom Wert hat -- so steht es dann auch in "state".
Auf die Maskierung von ;;  bin ich dann selbst gekommen als als ich dann nicht mehr am PC vertieft war.

Hier würden Beispiele in der ref helfen. Ich denke dass speziell die Möglichkeit ein  "define ... at + "   normal  dynamisch erstellt wird und deshalb hier eine sytax für fhem("  "") sinnvoll ist.
Wenn man dies öfters in nicht simpler Weise sieht, fällt man weniger rein. 
Ich bin mir auch nicht sicher - wo man Fehler von der fhem - Ausführung sieht.  Stellte schon fest, dass bei Fehlern der Rest nicht ausgeführt wurde - man aber ja keinen Fehler sieht.

Aber da weis ich eventuell auch was noch nicht. Zumindest hab ich wieder noch etwas gelernt und werde jetzt wohl meine Schaltung fertig bekommen - im alten Jahr.

Wünsch allen einen guten Rutsch
FHEM auf Debian (RASPI), 2 * CUL868/433 *&nbsp; FS20 STR, 2 * HMS100 T, 2 *&nbsp;, 1* FS20 SU, 2 *&nbsp; FS20 SM8, 2 ; 1-wire Temp,i2c Bus; ESP32 WROOM; ESP8266; Arduino
Sonnenbatterie Eco8;Elektro&nbsp; Nachspeicher-Ofen Ladesteuerung,
Haus Lüftung,
Integration von HardwareAlarmanlag