FHEM Forum

FHEM => Frontends => FLOORPLAN => Thema gestartet von: joginet am 30 März 2014, 16:40:07

Titel: [gelöst] Floorplan-Seite refresh per notify auslösen?
Beitrag von: joginet am 30 März 2014, 16:40:07
Hallo Forum,

ich habe gerade die Fernbedienung meiner Aussenlampe mit einem HM-SCI3-3-FM syncronisiert:

http://forum.fhem.de/index.php?topic=21826.msg152902#msg152902 (http://forum.fhem.de/index.php?topic=21826.msg152902#msg152902)

Auf dem Floorplan habe ich einen dummy, der einen DECT200 schaltet (der wiederum bei Zustandsänderung eine Kippstufe schaltet)
und zusätzlich setzt der abgefragte Status des HM-SCI-3-FM (open/closed) in der Lampenleitung den Status dieses dummys per stateFormat auf on/off:

define Aussenlichtswitch dummy
attr Aussenlichtswitch room Aussenanlage
attr Aussenlichtswitch setList off on
define Aussenlichtswitch_an notify Aussenlichtswitch:on set Aussenbeleuchtung on
define Aussenlichtswitch_aus notify Aussenlichtswitch:off set Aussenbeleuchtung off

attr Aussenlicht_sync room Aussenanlage
define AussenlichtsyncAn notify Aussenlicht_sync:closed attr Aussenlichtswitch stateFormat on
define AussenlichtsyncAus notify Aussenlicht_sync:open attr Aussenlichtswitch stateFormat off


Das klappt wunderbar, das fp-icon tut was es soll - es ändert den Status jetzt auch, wenn ich meine Lampen über
die nicht in FHEM eingebundene JUNG-Fernbedienung einschalte.
Nur:
leider funktioniert das longpoll für dieses Icon (alle anderen gehen) jetzt nicht mehr ich muß jedesmal den browser refreshen.
Automatisches refresh (alle x Sekunden) möchte ich wenn möglich vermeiden.

Frage also:

1) kann ich per fhem befehl den Floorplan zum aktualisieren bewegen und diesen Befehl mit in die notifys packen?
Oder evt. einfach die fp-URL neu aufrufen mit GetHttpFile?? Das bekomme ich nicht hin, irgendwie stimmt meine Syntax nicht...
Probiert habe ich ausserdem schon  "attr WEB refresh x" im Notify. Im FHEM-Frontend geht es, im Notify nicht.

2) warum geht longpoll nicht? Hat das etwas mit dem stateFormat zu tun? Gibt es eine Alternative?

Gruß, Jochen
Titel: Antw:Floorplan-Seite refresh per notify auslösen?
Beitrag von: UliM am 30 März 2014, 17:42:01
Hi,
lies mal das Einteiger-pdf, die ersten beiden notify kannst Du zusammenfassen zu
define Aussenlichtswitch_an notify Aussenlichtswitch set Aussenbeleuchtung $EVENT

Was möchtest Du denn durch diese stateFormats erreichen? Wäre da nicht set oder setstate das richtigere?
Und ja, longpoll funzt nicht wg stateFormat.
=8-)
Titel: Antw:Floorplan-Seite refresh per notify auslösen?
Beitrag von: joginet am 30 März 2014, 19:36:49
Hmm - jetzt mal abgesehen von den notifys -
hab's gerade mal mit setstate probiert: auch hier geht kein longpoll.

ZitatWas möchtest Du denn durch diese stateFormats erreichen?

Nochmal die gegebene Situation und was ich erreichen will:
Ich schalte meine Aussenlampen über einen Jung Schaltaktor mit FB außerhalb von FHEM. Das soll/muß auch so bleiben.
Der JUNG-Aktor schaltet ein Stromstossrelais, welches die Lampen eion/ausschaltet.

Zusätzlich schalte ich die Lampen über meinen Floorplan mit einem Dect200.
Dieser schaltet bei Zustandsänderung eine Kippstufe, die ihrerseits einen Tastimpuls f.d. Stromstossschalter auslöst.
Klingt kompliziert - ist aber eigentlich ganz simpel  :)

Wenn jetzt z.B. über das fp-icon die Geschichte angeschaltet wird und über die JUNG-FB wieder aus, dann ist das icon natürlich nicht mehr "synchron". Und dafür habe ich am Ende der Lampenleitung einen jetzt HM-Sensor hängen - der meldet "closed" bei "Lampen an" und "open" bei Lampen aus"

ZitatWäre da nicht set oder setstate das richtigere?

Der Ausgelesene Zustand des HM-Sensors soll nur das fp-Icon verändern und darf keinesfalls einen 2. Set-Befehl geben
(weil: dann wieder Zustandsänderung am Dect 200 --> Lampen wieder aus)

Das hat mit stateFormat alles geklappt, bis auf das fehlende longpoll. Nach Browserrefresh ist da icon aktuell..
Daher die Frage, ob ich iregendwie einen Befehl zum "refresh" in das Notify packen kann - dann wäre alles erledigt...

Das Problem ist das Schalten bei Zustandsänderung des DECT200:
1x  "set Aussenbeleuchtung on" schaltet ein, nochmal "set Aussenbeleuchtung on" schaltet aus. Der Zustand on/off des DECT200 ist also eigentlich egal. Und für mich ist nur die Änderung des fp icon wichtig...


Titel: Antw:Floorplan-Seite refresh per notify auslösen?
Beitrag von: UliM am 31 März 2014, 08:37:38
setstate setzt den Status ohne ein Event auszulösen.
=8-)
Titel: Antw:Floorplan-Seite refresh per notify auslösen?
Beitrag von: joginet am 31 März 2014, 19:56:09
Hab's sicherheitshalber gerade nochmal probiert: auch setstate löst kein longpoll aus - nur nach browser-refresh ändert sich das icon...

Gruß, Jochen
Titel: Antw:Floorplan-Seite refresh per notify auslösen?
Beitrag von: UliM am 31 März 2014, 20:21:27
Stimmt, longpoll braucht nen Event.
Also musst Du Dir wohl nen dummy bauen, der den richtigen Status mit set verbraten kriegt und im FP diesen Anzeigen.
=8-)
Titel: Antw:Floorplan-Seite refresh per notify auslösen?
Beitrag von: joginet am 31 März 2014, 21:05:30
ZitatAlso musst Du Dir wohl nen dummy bauen, der den richtigen Status mit set verbraten kriegt und im FP diesen Anzeigen.

Hab ich ja - geht aber dann auch nicht per longpoll.
Wie ist das eigentlich mit longpollSVG ?

ZitatReloads an SVG weblink, if an event should modify its content. Since an exact determination of the affected events is too complicated, we need some help from the #FileLog definition in the .gplot file: the filter used there (second parameter) must either contain only the deviceName or have the form deviceName.event or deviceName.*. This is always the case when using the Plot editor. The SVG will be reloaded for any event triggered by this deviceName. Default is off.

Kann mir das helfen? Und wenn ja wie?  :)
Alternativ nochmal die Frage: wie kann ich ein refresh der floorplan URL per Befehl auslösen?
Titel: Antw:Floorplan-Seite refresh per notify auslösen?
Beitrag von: UliM am 31 März 2014, 21:35:13
Zitat von: joginet am 31 März 2014, 21:05:30
Alternativ nochmal die Frage: wie kann ich ein refresh der floorplan URL per Befehl auslösen?
Mit Bordmitteln gar nicht.
Es gibt entsprechende Funktionen in fhemweb.pm und floorplan.pm, such im Code nach 'redirectCmd'
Weiß aber nicht ob sich das auch von 'außerhalb' aufrufen lässt. Vmtl nicht.

Vll muss hier jemand anderes ran, ich versteh Dein Problem nicht.
Wenn ein dummy per set einen neuen Wert kriegt, dann wird das auch per longpoll aktualisiert.
Wenn du was mit stateFormat setzt, dann nicht. Mein Vorschlag war dafür einen weiteren dummy anzulegen, der immer mit set gesetzt wird. Wenn das für Dich nicht pAsst weiß ich auch nicht weiter.

Gruß Uli
Titel: Antw:Floorplan-Seite refresh per notify auslösen?
Beitrag von: joginet am 01 April 2014, 07:35:41
Hätte nicht gedacht, dass das so schwierig zu lösen ist... ::)

Zitatich versteh Dein Problem nicht.
Wenn ein dummy per set einen neuen Wert kriegt, dann wird das auch per longpoll aktualisiert.

Hab's gerade (sicherheitshalber) nochmal probiert:
set --> longpoll
setstate --> kein longpoll, icon wechselt nur nach browserrefresh

Hier nochmal mein dummy-Versuch:

define Aussenlichtswitch dummy
attr Aussenlichtswitch room Aussenanlage
attr Aussenlichtswitch setList off on
define Aussenlichtswitch_an notify Aussenlichtswitch:on set Aussenbeleuchtung on
define Aussenlichtswitch_aus notify Aussenlichtswitch:off set Aussenbeleuchtung off

attr Aussenlicht_sync room Aussenanlage
define AussenlichtsyncAn notify Aussenlicht_sync:closed setstate Aussenlichtswitch on
define AussenlichtsyncAus notify Aussenlicht_sync:open setstate Aussenlichtswitch off


Und aprospos reload:
Ich habe in diesem Thread http://forum.fhem.de/index.php?topic=19138.0 (http://forum.fhem.de/index.php?topic=19138.0)
ein Beispiel für GetFileFromURL gefunden.
In meiner (grenzenlosen) Naivität habe ich gedacht, ich könnte damit auf die fp-URL verweisen und so einen reload auslösen.
Oder auf eine beliebige html Seite verweisen, die Ihrerseits wieder auf den fp "redirectet" und so das ganze neu lädt.

Dazu habe ich zu Testzwecken einen weiteren Dummy gebaut:
define browserrefresh_an notify browserrefresh:on {GetFileFromURL("http://meine_ip:8083/fhem/floorplan") }
Im log steht dann das hier:
ZitatCustomGetFileFromURL http://meine_ip:8083/fhem/floorplan: Select timeout/error:
Egal welche URL ich da eintrage..

Gruß, Jochen

Titel: Antw:Floorplan-Seite refresh per notify auslösen?
Beitrag von: joginet am 01 April 2014, 16:46:20
Ich glaube ich bin ganz kurz vorm "Durchbruch"  :)

Beschränken wir uns doch mal bitte auf das automatisierte Browser-Reload - damit wäre ich schon sehr glücklich.

Ich mir habe laut dieser Anleitung:

http://www.fhemwiki.de/wiki/Browsersteuerung,_Seiten_per_JS_autom._aufrufen

eine fhemweb_pageswap.js und einen Pageswap-Dummy erstellt.

Dann habe ich mir selbst einen dummy erstellt und damit den pageswap-dummy veranlasst, den fp "Erdgeschoss" neu zu laden:

define browserrefresh dummy
attr browserrefresh setList off on
define browserrefresh_an notify browserrefresh:on set Dum_pageswap_D /fhem/floorplan/Erdgeschoss
define browserrefresh_aus notify browserrefresh:off set Dum_pageswap_D /fhem/floorplan/Erdgeschoss


Mit "set browserrefresh on/off" wird jetzt der fp neu geladen.(Hurrah !)

Jetzt zu meinem Sync:

Es wird ja der Status des HM-SCI-3-FM abgefragt und per notify eine Aktion aufgerufen.
Das sollte dann so aussehen:
1) setstate meines Aussenlicht-Dummys "Aussenlichtswitch" (on bzw. off)
2) danach "set browserrefresh on" weil longpoll nach setstate nicht geht

Ich habe es so versucht (der HM-SCI-3-FM heisst "Aussenlicht_sync"):

define AussenlichtsyncAn notify Aussenlicht_sync:closed setstate Aussenlichtswitch on;;
set browserrefresh on
define AussenlichtsyncAus notify Aussenlicht_sync:open setstate Aussenlichtswitch off;;
set browserrefresh off


Leider passiert nichts bei Änderung open/closed.
Im log steht:"Can't modify single ref constructor in scalar assignment at (eval 389) line 1, at EOF"

Aber: Der Befehl setstate alleine im notify geht.
Ich habe "browserrefresh" und testweise auch andere dummys ("radio_an") alleine im
notify probiert - keiner der dummys schaltet.
Wenn ich aber einen physikalisch vorhandenen Schalter  (z.B."Licht_Wohnzimmer1" ) ins notify packe,
dann geht das und reagiert auch auf open/close - nur dummys werden halt nicht angesprochen...

Warum nur ist das so??
In meiner Not habe ich dann mal testweise einen FS20 dummy gebaut (dachte, der tut so, als wäre er Hardware) -
aber auch der reagiert nicht.
Im webfrontend reagiert alles sofort. "set browserrefresh on", "setstate Aussenlichtswitch on", der FS20-Probedummy -
alles kein Problem - nur das blöde notify will nicht.
Es ist zum Mäusemelken - mir fehlt da nur noch der letzte Schritt aber ich komme einfach nicht auf die Lösung...

Gruß, Jochen





Titel: Antw:Floorplan-Seite refresh per notify auslösen?
Beitrag von: joginet am 01 April 2014, 17:14:28
Aha:
Zitat2014.04.01 17:11:32 3: Func_pageswap_N return value: Can't modify single ref constructor in scalar assignment at (eval 466) line 1, at EOF
syntax error at (eval 466) line 1, near "\    if"
syntax error at (eval 466) line 1, at EOF

Betroffen sind nicht alle dummys, sondern nur dummys, die mein "set browserrefresh" enthalten - obwohl es funktioniert, gibt es eine Fehlermeldung. Kennt sich jemand aus?

Es müsste doch am notify für pageswap liegen, oder? Hab's einfach kopiert:

define Func_pageswap_N notify Dum_pageswap_D { \
\
  my $ps_Val = (Value("Dum_pageswap_D"));;\
\
   if ($ps_Val ne "none") { \
      fhem("define reset_pageswap at +00:00:01 set Dum_pageswap_D none");;\
   }\
}



Hier die fhemweb_pageswap.js so, wie sie im wiki steht:

// Datei: fhemweb_pageswap.js
// Von FHEM aus initiiertes Wechseln der angezeigten Seite:

function
FW_pageswapUpdateLine(d){

var id = d[0];                                  // id der Objekte auf der Seite
var val = d[1];                                 // Wert der Objekte auf der Seite

  if (id == "Dum_pageswap_D" && val != "none"){
     window.location.href = ""+val               // wenn Dummy Wert enthaelt, wechseln zu neuer Seite
                                                 // Variable "val" wird nicht geprueft und muss sinnvollen Wert enthalten
  }

}


FW_widgets['pageswap'] = {
  updateLine:FW_pageswapUpdateLine
};


Titel: Antw:Floorplan-Seite refresh per notify auslösen?
Beitrag von: joginet am 01 April 2014, 21:55:34
Ok, es war ein Formatierungsfehler - hatte einfach aus dem wiki kopiert. So geht es ohne Fehlermeldung:

define Func_pageswap_N notify Dum_pageswap_D { my $ps_Val = (Value("Dum_pageswap_D"));;if ($ps_Val ne "none") { fhem("define reset_pageswap at +00:00:01 set Dum_pageswap_D none");; } }

Aber - nächstes Problem:

hier nochmal mein dummy "browserrefresh"

define browserrefresh dummy
attr browserrefresh setList off on
define browserrefresh_an notify browserrefresh:on set Dum_pageswap_D /fhem/floorplan/Erdgeschoss
define browserrefresh_aus notify browserrefresh:off set Dum_pageswap_D /fhem/floorplan/Erdgeschoss


Im webfrontend: "set browserrefresh on" --> floorplan aktualisiert
Im floorplan als icon angelegt und geklickt --> floorplan aktualisiert
Im notify angelegt --> floorplan aktualisiert nicht

define AussenlichtsyncAn notify Aussenlicht_sync:closed set browserrefresh on;;setstate Aussenlichtswitch on

Der setstate Befehl danach wird ausgeführt, nur der browserrefresh wird im notify einfach nicht ausgeführt...
Wenn ich sowas hier mache:
define AussenlichtsyncAn notify Aussenlicht_sync:closed set Lampe_Arbeitszimmer on;;setstate Aussenlichtswitch on

dann reagiert alles. Liegt also nicht am open/close state

Seufz - ich drehe mich im Kreis, es erschließt sich mir einfach nicht, wo der Fehler liegt, das log sagt jetzt, das alles ok ist.
kann mich evt. jemand erlösen (evt. bevor meine Frau mit Scheidung droht weil ich mit meinem Smarthome verwachsen bin?)  ;D

Nachtrag: habe mir gerade mal testweise einen pushmail-dummy ins notify gelegt. Auch der geht nicht - hat also auch nichts mit dem browserrefresh zu tun. Aber: echte Hardware anstatt dummy im notify schaltet sofort (set Lampe on)
Titel: Antw:Floorplan-Seite refresh per notify auslösen?
Beitrag von: fiedel am 02 April 2014, 15:14:01
Hi Jochen,

probier mal die Perl- Variante, also:

define AussenlichtsyncAn notify Aussenlicht_sync:closed {fhem("set browserrefresh on");;fhem("setstate Aussenlichtswitch on")}

Ist ja an sich ne simple Sache, aber manchmal ist das seltsam. Da geht was nicht, obwohl es gehen müsste.  ;)
Ich gucke dann meistens bei mir selber ab, oder versuche im Forum Beispiele zu finden, wo man sich was ableiten kann.
Bestimmte Sachen gehen z.B. im "notify", im "at" aber nicht, usw.

Freue mich übrigens, dass dir "pageswap" hilft.

Gruß

Frank
Titel: Antw:Floorplan-Seite refresh per notify auslösen?
Beitrag von: joginet am 02 April 2014, 16:30:29
Hallo Frank,

Perl-Variante hatte ich auch schon probiert - und soeben sicherheitshalber nochmal.
Der Effekt ist leider der gleiche. Das setstate wird ausgeführt, der dummy nicht. Wie gesagt:
würde ich anstelle des dummys "browserrefresh" einen HM-Schalter o.ä.
ansprechen, dann geht es. Auch andere dummys in diesem notify funktionieren nicht. Wie gesagt: nur im notify des HM-SCI-3-FM.

Hatte erst vermutet, es läge am state des HM-SCI-3-FM. Das Gerät hat einmal den state "open/closed" und ein reading "contact" (open/closed).
Ich hatte den Eindruck, das der Wert vom reading "contact" immer ein bischen früher kommt, als der state.

Also habe ich versucht mit dem reading statt mit dem state zu schalten - gleicher Effekt.
Außerdem - siehe oben - "set Lampe on" geht ja sofort mit "state"...

Im Logfile finde ich keinen Fehler - kann ich irgendwo detailliert sehen, was im notify schiefläuft?

ZitatFreue mich übrigens, dass dir "pageswap" hilft.

Damit ist alles bestens - das ist genau das, was ich gesucht habe - rennt wie verrückt  :)
Titel: Antw:Floorplan-Seite refresh per notify auslösen?
Beitrag von: fiedel am 02 April 2014, 16:56:33
Und wenn du den "Zwischendummy" weglässt und direkt den pageswap- Dummy-set mit dem Seitenlink in das notify nimmst? Das wäre sowieso besser, weil direkter. Probier mal das. Ansonsten nimm mal den "Event Monitor" zu Hilfe (ganz unten im FHEM- Menü). Damit siehst du genau was ausgelöst wird, wenn du einen Befehl absetzt, oder wenn ein Ereignis eintritt usw..
Titel: Antw:Floorplan-Seite refresh per notify auslösen?
Beitrag von: joginet am 02 April 2014, 18:52:53
ZitatUnd wenn du den "Zwischendummy" weglässt und direkt den pageswap- Dummy-set mit dem Seitenlink in das notify nimmst?
Hab ich schon - geht auch nicht. Und wie gesagt - hat auch mit dem pageswap nichts zu tun andere dummys gehen auch nicht. Pushmail, usw.
Aber nur in diesem notify, in anderen notifys ist alles ok...

Der event-monitor sagt nur:
Zitat2014-04-02 18:50:36 CUL_HM Aussenlicht_sync closed
2014-04-02 18:50:36 CUL_HM Aussenlicht_sync contact: closed (to HMLAN1)
von notify steht da nichts...

Titel: Antw:Floorplan-Seite refresh per notify auslösen?
Beitrag von: fiedel am 02 April 2014, 20:07:00
Habs eben mal nachgebaut:

define browserrefresh dummy
attr browserrefresh setList off on
define browserrefresh_an notify browserrefresh:on set Dum_pageswap_D /fhem?room=Unsorted
define browserrefresh_aus notify browserrefresh:off set Dum_pageswap_D /fhem?room=Unsorted

define Aussenlichtswitch dummy

define AussenlichtsyncAn notify vRemote_Btn4:ON setstate Aussenlichtswitch on;;set browserrefresh on
define AussenlichtsyncAus notify vRemote_Btn4:OFF setstate Aussenlichtswitch off;;set browserrefresh off


-der pageswap- Dummy ist auch auf der seite "Unsorted" vorhanden
-vRemote_Btn4 ist eine Taste auf einer HM- Fernbed.
-wenn ich die Taste drücke geht zuerst "browserrefresh" auf on oder off, dann refreshed die Seite und "Aussenlichtswitch"
geht ebenfalls auf off oder on (synchron zu  "browserrefresh")

Ich hoffe das ist in etwa das was du wolltest?

Titel: Antw:Floorplan-Seite refresh per notify auslösen?
Beitrag von: joginet am 03 April 2014, 07:13:11
Danke für Deine Mühe !

ZitatIch hoffe das ist in etwa das was du wolltest?
Exakt.
Ich habe mal alle dummys gelöscht und alles genau so gemacht wie vorgeschlagen - leider keine Veränderung.
Ich habe auch den HM-SCI-3-FM mal umbenannt - es bleibt dabei: der setstate wird ausgeführt, der dummy nicht.
Aber nochmal: es liegt definitiv nicht am pageswap - auch andere dummys funktionieren wie gesagt nicht.

Aaaber:
Ich habe das notify jetzt einfach mal auf irgendeine Lampe (statt auf den HM-SCI-3-FM) gelegt und siehe da - alles klappt wie gewünscht:
define AussenlichtsyncAus notify Arbeitszimmer2:off  setstate Aussenlichtswitch off;;set browserrefresh off

Es liegt also nicht am notify, am dummy oder am Syntax.

Vermutlich scheint da irgendetwas mit dem state des HM-SCI-3-FM schiefzulaufen.
Warum es bei Hardware-Aktoren problemlos schaltet und nicht bei dummys - keine Ahnung.

Wie gesagt: im web-Frontend erscheint bei Betätigung das reading "contact" immer einen Tick früher als der state.
Evt. ist das der Ansatz? Ich hatte schon ja versucht, mit dem reading zu schalten - vermutlich bin ich am Syntax gescheitert.
Ich hatte es mit einen readingsProxy versucht:

define ALproxy readingsProxy Aussenlicht_sync:contact
define ALproxyAn notify ALproxy:closed set browserrefresh on;;setstate Aussenlichtswitch on
define ALproxyAus notify ALproxy notify ALproxy:open set browserrefresh off;;setstate Aussenlichtswitch off


geht aber nicht. Ist vermutlich falsch... Kann mir alternativ jemand mit der korrekten schreibweise von if und readingsVal auf die Sprünge helfen? Aus dem Beispielen im Einsteiger pdf und im Forum werde ich nicht so richtig schlau...





Titel: Antw:Floorplan-Seite refresh per notify auslösen?
Beitrag von: fiedel am 03 April 2014, 07:34:02
So einen HM-SCI-3-FM habe ich zufälllig hier rumliegen. Ich stelle das nachher mal nach. Das ist ja sowas ähnliches wie meine Fernbedienung. Das kriegen wir hin.  8)
Titel: Antw:Floorplan-Seite refresh per notify auslösen?
Beitrag von: joginet am 03 April 2014, 08:01:41
Klasse - Danke !!!
Titel: Antw:Floorplan-Seite refresh per notify auslösen?
Beitrag von: fiedel am 03 April 2014, 19:30:33
Sooooooooo  :)

Geht alles wie es soll. Bei "closed" gehen beide Lampen (Icons) an, bei "open" wieder aus. Ich werd übrigens bald was ganz ähnliches bauen: Habe heute meine Gartenpumen- Rückmeldung mit FS20KSE getestet, die ich im Winter an die Pumpe gebaut hatte und festgestellt, dass die Reichweite ziemlich an der Grenze ist. Nun muss einer der HM-SCI-3-FM dran glauben.  ;) Der war eigentlich für den Gewitterwarner.

Viel Erfolg!

Frank



define browserrefresh dummy
attr browserrefresh setList off on
define browserrefresh_an notify browserrefresh:on set Dum_pageswap_D /fhem?room=Unsorted
define browserrefresh_aus notify browserrefresh:off set Dum_pageswap_D /fhem?room=Unsorted

define Aussenlichtswitch dummy

define AussenlichtsyncAn notify Sens_GW1_Sw_01:closed setstate Aussenlichtswitch on;;set browserrefresh on
define AussenlichtsyncAus notify Sens_GW1_Sw_01:open setstate Aussenlichtswitch off;;set browserrefresh off

define Sens_GW1 CUL_HM 2088403
attr Sens_GW1 IODev HM_USB
attr Sens_GW1 actCycle 028:00
attr Sens_GW1 actStatus alive
attr Sens_GW1 autoReadReg 4_reqStatus
attr Sens_GW1 expert 2_full
attr Sens_GW1 firmware 1.1
attr Sens_GW1 model HM-SCI-3-FM
attr Sens_GW1 peerIDs
attr Sens_GW1 room CUL_HM
attr Sens_GW1 serialNr KEQ0702019
attr Sens_GW1 subType threeStateSensor
attr Sens_GW1 webCmd getConfig:clear msgEvents

define Sens_GW1_Sw_01 CUL_HM 20884031
attr Sens_GW1_Sw_01 model HM-SCI-3-FM
attr Sens_GW1_Sw_01 peerIDs 00000000,

define Sens_GW1_Sw_02 CUL_HM 20884032
attr Sens_GW1_Sw_02 model HM-SCI-3-FM
attr Sens_GW1_Sw_02 peerIDs 00000000,

define Sens_GW1_Sw_03 CUL_HM 20884033
attr Sens_GW1_Sw_03 model HM-SCI-3-FM
attr Sens_GW1_Sw_03 peerIDs 00000000,

Titel: Antw:Floorplan-Seite refresh per notify auslösen?
Beitrag von: joginet am 04 April 2014, 07:58:39
Hi Frank!
Erstmal nochmal Danke für die Mühe !
Hmm - bei mir geht es leider noch nicht.
Mein browserrefesh-dummy für sich funktioniert, der Aussenlichtswitch für sich auch, setstate im notify geht

Wo liegt bloß der Fehler? Ich benutze nur einen Kanal des HM-SCI-3-FM.
Ich habe ich mit den attributen aus Deinem Beispiel "gespielt" -(ohne wirklich zu wissen, was ich tue).

Bei mir nicht gesetzt waren:
"autoReadReg 4_reqStatus" und "peerIDs 00000000,"

So sieht es momentan b ei mir aus:

Device Internals für den HM-SCI-3-FM sagt:

ZitatDEF    23CB54
HMLAN1_MSGCNT  26
HMLAN1_RAWMSG E23CB54,0000,7946E07F,FF,FFAC,7BA44123CB54257887017800
HMLAN1_RSSI -84
HMLAN1_TIME 2014-04-04 07:43:26
IODev HMLAN1
LASTInputDev HMLAN1
MSGCNT 26
NAME CUL_HM_HM_SCI_3_FM_23CB54
NR 568
STATE CMDs_processing...
TYPE CUL_HM
channel_01 ALsync
channel_02 CUL_HM_HM_SCI_3_FM_23CB54_Sw_02
channel_03 CUL_HM_HM_SCI_3_FM_23CB54_Sw_03
lastMsg No:7B - t:41 s:23CB54 d:257887 017800
protCmdPend 13 CMDs pending
protLastRcv 2014-04-04 07:43:26
protResnd 1627 last_at:2014-04-04 07:47:31
protSnd 22 last_at:2014-04-04 07:43:26
protState CMDs_processing...
rssi_at_HMLAN1 avg:-79.15 min:-93 max:-77 lst:-84 cnt:26

und readings sagt:

ZitatActivity  alive  2014-04-03 06:44:51
CommandAccepted yes  2014-03-29 15:40:36
R-intKeyVisib  set_invisib  2014-03-29 15:40:34
R-pairCentral  set_0x257887 2014-03-29 15:40:34
RegL_00: state CMDs_processing... 2014-04-04 07:43:26

und Atributes sagt:

ZitatactCycle  028:00
actStatus  alive
expert  2_full
firmware  1.1
model HM-SCI-3-FM
peerIDs
room  CUL_HM
serialNr  KEQ0767555
subType threeStateSensor
webCmd getConfig

Es ist zum Mäusemelken...

Gruß, Jochen

PS: ich hatte ja schon erwähnt, dass der "state" immer später kommt als das reading "contact".
Im webfrontend ist es sogar so, das nach Auslösen des HM-SCI-3-FM
bei "contact" immer sofort die Änderung erscheint - z.B. "open (toHMLAN1)"
der "state" ändert sich aber immer erst nach reload der Seite - kann es damit zu tun haben?
Irgendwelche wilden Laufzeitprobleme? Wie gesagt - Hardware-Schalter im notify bekommen die state Änderung sofort
mit... Ich lege mir hier so langsam aber sicher die Karten   :-\
Titel: Antw:Floorplan-Seite refresh per notify auslösen?
Beitrag von: fiedel am 04 April 2014, 10:02:15
Hi Jochen,

die Attribute wurden bei mir so automatisch erstellt per Autocreate. Ich hab nix gezaubert.  ;) Hab übrigens nicht die aktuellste Version des HM- Moduls. Muss mal wieder Update machen.

Das mit dem state und contact ist bei mir genauso (siehe Bild). Ich muss auch immer erst die Seite refreshen, damit state aktualisiert.
So wie ich das Notify angelegt habe, reagiert es aber sofort. Ich mach dir mal einen Eventmon.- Auszug von dem Schaltspiel:


Events:
2014-04-04 09:59:30 Global global DEFINED reset_pageswap
2014-04-04 09:59:30 dummy Dum_pageswap_D /fhem?room=Unsorted
2014-04-04 09:59:31 dummy browserrefresh on
2014-04-04 09:59:31 CUL_HM Sens_GW1_Sw_01 closed
2014-04-04 09:59:31 CUL_HM Sens_GW1_Sw_01 contact: closed (to HM_USB)
2014-04-04 09:59:31 dummy Dum_pageswap_D none
2014-04-04 09:59:31 Global global DELETED reset_pageswap
2014-04-04 09:59:32 Global global DEFINED reset_pageswap
2014-04-04 09:59:32 dummy Dum_pageswap_D /fhem?room=Unsorted
2014-04-04 09:59:32 dummy browserrefresh off
2014-04-04 09:59:32 CUL_HM Sens_GW1_Sw_01 open
2014-04-04 09:59:32 CUL_HM Sens_GW1_Sw_01 contact: open (to HM_USB)
2014-04-04 09:59:33 dummy Dum_pageswap_D none
2014-04-04 09:59:33 Global global DELETED reset_pageswap


Dazu musst du wissen, dass der Eventmon. die Events nicht unbedingt in der richtigen Reihenfolge ausgibt. Aber man sieht, was alles passiert und du kannst mal gucken, ob bei dir da was fehlt.

Gruß

Frank
Titel: Antw:Floorplan-Seite refresh per notify auslösen?
Beitrag von: joginet am 05 April 2014, 09:45:43
Seufz - ich glaube, ich gebe auf. Bei meiner konfig. muss irgendetwas kaputt sein.

Wenn ich alles so mache wie oben (also mit dummys im notify) dann steht im event-Monitor nur das hier:

Zitat2014-04-05 09:34:39 CUL_HM ALsync closed
2014-04-05 09:34:39 CUL_HM ALsync contact: closed (to HMLAN1)

Wenn ich aber einen Hardware-Schalter "Arbeitszimmer2" ins notify lege, dann steht da:

ZitatEvents:
2014-04-05 09:36:09 CUL_HM ALsync closed
2014-04-05 09:36:09 CUL_HM ALsync contact: closed (to HMLAN1)
2014-04-05 09:36:11 FBDECT Arbeitszimmer2 set_on
2014-04-05 09:36:11 FBDECT Arbeitszimmer2 on

Ich glaube, ich werde das so nicht lösen können.
Ich werde mir jetzt einfach einen zusätzlichen Hardware-Schalter** besorgen, den ich dann mit einem zus. notify versehe.
Wenn ich dazu meine Lampe "Arbeitszimmer2" missbrauche, dann läuft alles wie gewünscht:

define ALsyncAn notify ALsync:closed set Arbeitszimmer2 on
define ALsyncAus notify ALsync:open set Arbeitszimmer2 off

define ALsync_switchAn notify Arbeitszimmer2:on setstate Aussenlichtswitch on;;set browserrefresh on
define ALsync_switchAus notify Arbeitszimmer2:off setstate Aussenlichtswitch off;;set browserrefresh off


Ich sicherlich keine perfekte Lösung, aber momentan fällt mir nichts anderes ein. Kann man eigentlich irgendwo sehen,
was im notify direkt passiert - also "eine Stufe tiefer" als im event-Monitor oder im logfile?

Gruß, Jochen

**PS: hab's sicherheitshalber nochmal gecheckt: egal of FBDECT oder HM-Switch: ein Hardwareschalter im notify geht immer...
Titel: Antw:Floorplan-Seite refresh per notify auslösen?
Beitrag von: fiedel am 05 April 2014, 23:19:17
Hi Jochen,

also wenn das bei mir geht, muss das auch bei dir gehen.  :) Dein HM- Dreierkontakt ist ja auch ein "Hardware- Schalter". Etwas anderes wäre es, wenn das Event von einem Dummy kommen würde, oder sonstwie indirekt. Zum "tiefer in das Notify gucken" habe ich auch keine Idee. Du kannst aber in das Notify "Log 1"- Einträge einbauen (z.B. nach jeder "if- Verzweigung" oder nach jedem Befehl) , in denen du dir den Schritt oder den Wert einer Variable ausgeben lässt.
Ansonsten würde ich an dieser Stelle an deiner Stelle  ;) einen Cut machen und FHEM oder das ganze System neu aufsetzen. Ein anderes Forenmitglied hatte so auch gerade ein "unlösbares" 1-Wire- Problem in den Griff bekommen. Ist die letzte Möglichkeit, aber manchmal hilft sie.

Gruß

Frank
Titel: Antw:Floorplan-Seite refresh per notify auslösen?
Beitrag von: joginet am 06 April 2014, 09:40:42
Hi Frank !
Zitatalso wenn das bei mir geht, muss das auch bei dir gehen.
Gar keine Frage  :)
Da ich aber ja alles genauso gemacht habe, muß bei mir etwas kaputt sein. Vielleicht sogar der Sensor?

Zitatund FHEM oder das ganze System neu aufsetzen.

Ohgottohgott - bloß das nicht. Never touch a running system. Never change a winning team, usw.

Ich bin ja noch nicht soo lange dabei (seit Anfang Januar 2014, da habe ich mir den Pi angeschafft),
aber ich habe doch schon einiges realisiert (das meisste übrigens komplett ohne eigenes knowhow und mit Hilfe dieses Forums und copy&paste - ich glaube ich habe einiges gelernt...) und den Nerdfaktor in unserem Haus dadurch extrem in die Höhe katapultiert:

- Ich habe mittlerweile jeden Schalter im Haus durch HM-Schaltaktoren ersetzt und ich habe Gruppen definiert
- Ich kann die Rolläden steuern. Und jeden Heizkörper regeln - auch per voice
- Ich habe für jedes Stockwerk einen prima Floorplan (Bedienung u.a. durch an die Wand gespaxte Tablets),
- Ich habe meine Überwachungskameras integriert
- Ich kann die Glotze, die Dreambox und die Stereoanlage steuern,
- Ich habe pushmail und Debian sendmail integriert --> kann die Tablets klingeln lassen, wenn das Frühstücksei fertig ist
- Ich habe meine HUE-Lampen eingebaut und mir dafür extra eine html-Seite erstellt, die FHEM steuert und gleichzeitigs Apps starten
  kann (z.B. HUE sync mit dem Ambilight-TV)
- habe ich die Kaffeemaschine erwähnt ? Und den Wecker? Und den Fernzugriff?
- und pageswap  :)

Achja - und nicht zuletzt:

- ich kann das ganze Gedöns komplett per Sprache steuern. Per Android Autovoice, Tasker und andFHEM und bekomme ein
  Feedback per Voice. " Ich habe die Kaffeemaschine eingeschaltet". WG mit Siri, sozusagen  ;D

Und jetzt mein "Problem": es läuft alles perfekt, flüssig und absturzfrei.
(bis auf dieses eine notify)

Und ich habe wirklich, wirklich große Angst vor dem bösen Wort "Neuinstallation"  ;D
Sogar das Wort "Update" bereitet mir Kopfschmerzen.

Das letzte Update, das bei mir stattgefunden hat war das von andFHEM.
Das andFHEM konnte danach mehr als eine Verbindung verwalten. Sicherlich für andere eine sinnvolle Geschichte,
bei mir hat es jedoch dazu geführt, dass ich mehr als 250 Sprachbefehle neu erstellen musste.
Wirklich 250, denn ich kann jedes einzelne TV-Programm per Spracherkennung-->Dreamboxapi umschalten

Anderes Beispiel: Die Spracherkennung auf einem meiner Androiden war auf einmal extrem verzögert.
Lag an einem Update der App "Google Suche". Habe ich auch ewig nach gesucht:
http://forum.fhem.de/index.php/topic,21561.0.html (http://forum.fhem.de/index.php/topic,21561.0.html)
Naja, seitdem habe ich bei meinen Androiden die automatischen Updates aus und eine Allergie gegen Updates
(solange sie nicht irgendwelche Sicherheitslücken stopfen oder wirklich Mehrwert bringen) entwickelt !

Da ich eigenlich alles zum laufen habe, was ich mir so wünsche (Anwesenheitserkennung fehlt evt. noch),
fällt diese Lampensync-Geschichte jetzt eigentlich in den Bereich "Schönheitsreparatur".

Ist sicherlich technisch (und finanziell) unbefriedigend, dafür extra einen HM-Switch anzuschaffen, aber
wenn ich die Kosten in Relation zum Zeitaufwand des Neuaufsetzens (da ist es wieder, das böse Wort)stelle...
Ich denke nur an die ganzen perl-libs, die ich da händisch upgedated habe -ohne zu wissen, wofür die sind, natürlich  ;D

Nein, ich denke ich probiere es erstmal mit der Frickellösung - wenn mir die richtige Lösung mal "entgegenspringt",
dann werde ich diese einsetzen und für den Switch wird sich schon ein Einsatzgebiet finden...

Gruß, Jochen

PS: um nochmal auf den Titel des Threads zurückzukommen: allen, die ein longpoll-Problem mit irgendwelchen dummys/Symbolen haben kann ich pageswap sehr empfehlen, das funktioniert prima !
Titel: Antw:Floorplan-Seite refresh per notify auslösen?
Beitrag von: fiedel am 06 April 2014, 13:25:44
WOW! Da kann ich ja noch viel mehr von dir lernen, als du von mir - obwohl ich schon fast länger hier mitbastle als Rudi König!  ;) ;D

Also ich verstehe das total. Hab mir auch schon viel wieder eingerissen durch Updates und neu Aufsetzen. Deshalb baue ich wo es geht doppelte Böden in Form von Backups und Images ein. Du könntest "einfach" eine zweite Karte mit frischem Linux nehmen, FHEM frisch draufspielen und deine Tests machen. Danach fährst du die alte Karte wieder hoch, als wäre nichts gewesen.

Da ich nun weiß wie du "tickst", halte ich es am ehesten für möglich, dass du nur das HM- Modul einzeln updaten brauchst, den 3-Fach-Kontakt noch mal neu erkennen und pairen lassen musst und dann dürfte es schon gehen. Das HM- Modul ist von Martin so top gepflegt, dass du da nicht mit "Update- Rückschlägen" rechnen musst. Ansonsten hast du ja noch das Backup.

Update a single file:

    fhem> update 98_foobar.pm
   


Ich finde es immer schade, wenn man unnötige Workarounds oder Frickellösungen zu Hilfe nehmen muss, wo es doch einen direkten Weg gibt. Na ich bin ja gespannt, wofür du dich entscheidest...  ;)

Gruß

Frank
Titel: Antw:Floorplan-Seite refresh per notify auslösen?
Beitrag von: joginet am 06 April 2014, 14:49:54
ZitatDa kann ich ja noch viel mehr von dir lernen, als du von mir
Das wiederum glaube ich nicht  ;)
In copy & paste, da bin ich ganz groß - html kann ich ein bischen. Aber wehe, man setzt mir ein
Stück Perl-Code mit mehr als 3 Paar geschweiften Klammer vor...
Das Zeug ist bei mir "dynamisch gewachsen" - eigentlich wollte ich nur einen vorhandenen DECT200 irgendwie
anders ansteuern als über die Fritz!App.
(Mittlerweile hat auch meine Frau seit Wochen keinen Lichtschalter oder Heizkörper-Thermostaten mehr angefasst.
Fazit: es funktioniert einfach.Wenn ich Fachartikel lese, dass sich die Industrie nicht auf Smarthome-Standards
einigen kann, usw. - da Frage ich mich doch: haben die noch nie etwas von FHEM gehört? Das vereinigt doch nun
wirklich alles, was irgendwie einen LAN-Anschluß hat.)

ZitatDu könntest "einfach" eine zweite Karte mit frischem Linux nehmen
Das wiederum ist eine gute Idee. Ehlich gesagt, ich wollte meine Karte mal klonen - dann hätte ich auch einen
Ersatz zum testen. Backups mache ich ja regelmässig und ziehe sie auch per Filezilla woanders hin.

ZitatIch finde es immer schade, wenn man unnötige Workarounds oder Frickellösungen zu Hilfe nehmen muss, wo es doch einen direkten Weg gibt.

Gefallen tut es mir auch nicht. Frei nach Faust: "Allein - mir fehlt die logische Erklärung."
Wo es etwas zu lernen gibt, lerne ich gerne. In diesem Fall scheint halt etwas "kaputt" zu sein. Vielleicht der Aktor selber.
Vielleicht irgendwelche Signallaufzeiten? (warum reagiert ein Hardware-Aktor?...)

Und wenn es nach "neu aufsetzen" geht, dann weiss ich immer noch nicht warum. Ist ein abstruser Fehler - wir haben ja schon mehrfach verglichen. Ich schliesse fast aus, das ich mich irgendwo vertippt habe. Also - was solls. Hauptsache geht erstmal.
McGyver hätte irgendwas mit Panzertape & Schnürsenkel gemacht...  ;D

Ich setzte den Thread jetzt mal auf gelöst - denn den Floorplan kann man mit pageswap refreshen, wenn longpoll nicht machbar ist.