FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Owel am 15 Januar 2014, 13:15:21

Titel: Notify auf Browser-refresh legen
Beitrag von: Owel am 15 Januar 2014, 13:15:21
Hallo Leute,

ich bin in letzter Zeit ziemlich in FHEM eingestiegen,

habe MAX! erfolgreich mit nem CUL einbinden können
und auch I2C habe ich in FHEM und kann nun mein Licht im Hause steuern! Klasse!

Jetzt ist aber gerade diese I2C Schnittstelle nicht perfekt. Ich hoffe ihr könnt mir helfen.

Und zwar habe ich ein I2C Input Device (http://horter.de/shop/index.html?http://horter.de/shop/i2c_komponenten_i2c_hutschienenmodule/bausatz_i2c_input_5__24v_8_bit_fuer_din_schiene4684.html)
An diesem liegen die Schaltzustände meiner Lichter logisch an. HIGH (24V) -> Licht an, LOW(not connected) -> Licht aus

Jetzt ist es so, das ich die Lichter sowohl über FHEM steuern kann, als auch klassisch über Taster. Diese Taster triggern dann direkt ein Eltako Stromstoßrelais mit 2 Schließern, ein Schließer für 230V und einer für die 24V die dann am Input Device anliegen. (FHEM simuliert so einen Taster um das Licht zu schalten und gibt dann entsprechend auch einen Sromstoß auf das Eltako)

Das funkioniert sehr gut.
Wenn ich jetzt aber im Browser mir meine Dummy Devices für das Licht anschaue, und jetzt jemand einen Taster drückt bekomme ich das auf der Weboberfläche nicht mit.
Natürlich könnte ich ja mit einem 'at' alle 5sek den Status aktualisieren. Gefällt mir aber nicht. Es reicht wenn ich das nur tue, wenn ich auf der FHEM Oberfläche bin, könnt ihr mir hierzu einen Hinweis geben?

Danke
Owel
Titel: Antw:Notify auf Browser-refresh legen
Beitrag von: justme1968 am 15 Januar 2014, 14:12:23
es gibt (zur zeit) keine möglichkeit zuverlässig festzustellen ob gerade browserfenster offen sind. das einzige das eventuell geht ist nachzuschauen das es keine temporären web device instanzen gibt. das geht aber auch wieder nur durch pollen.

ich würde zwischen das i2c device und fhem noch eine kleine software oder hardware hängen die das pollen übernimmt und fhem (per interrupt) informiert das sich der zustand geändert hat. z.b. ein arduino mit firmata, ein raspberry pi.

gruss
  andre
Titel: Antw:Notify auf Browser-refresh legen
Beitrag von: Owel am 15 Januar 2014, 14:21:45
Das ändert dann aber auch nichts daran, dass dann eben das "zwischendevice" ständig pollen muss.

Fhem läuft auf einem PI, die ständig pollen methode lässt sich easy beibringen. nur brauche ich das pollen >90% der Zeit nicht. Deshalb würde ich es gerne vermeiden.
Ist einfach unschön.
Gibt es noch andere Möglichkeiten?

Titel: Antw:Notify auf Browser-refresh legen
Beitrag von: justme1968 am 15 Januar 2014, 14:29:55
wenn die hardware es hergibt gehen natürlich auch interrupts.

vielleicht hilft dir das hier weiter: http://forum.fhem.de/index.php/topic,16519.0.html (http://forum.fhem.de/index.php/topic,16519.0.html)

gruss
  andre
Titel: Antw:Notify auf Browser-refresh legen
Beitrag von: Owel am 15 Januar 2014, 14:38:03
Danke für den Link, aber das ist im Grunde auch nur ein Modul bei dem polling nett verpackt ist.
Das bekommt man auch mit 5 zeilen bash hin, und kann das dann direkt in FHEM einbinden.

Pollen ist soweit ja auch ok, aber bitte nur dann wenn ich es brauche.
Ich frage hier also nicht wie ich pollen realisieren kann, sondern wie ich einen "Schalter/trigger" habe, bei dem ich weiß, ich muss jetzt pollen?!

Titel: Antw:Notify auf Browser-refresh legen
Beitrag von: justme1968 am 15 Januar 2014, 14:43:43
also wenn ich mir den link anschaue reagiert fhem hier per interrupt und nicht per pollen.

es gibt keine möglichkeit zuverlässig zu entscheiden 'jetzt muss ich pollen' und jetzt brauche ich es nicht. erst recht nicht wenn du später mal abhängig vom zustand deines device in fhem mehr tun möchtest als es nur anzuzeigen.

entweder du pollst immer oder du hängst etwas dazwischen das per interrupt arbeitet.
Titel: Antw:Notify auf Browser-refresh legen
Beitrag von: Owel am 15 Januar 2014, 14:54:46
Ah ok, stimmt, hatte nur das "poll_interval" gesehen und schon gedacht der Interrupt geht über pollen.
Afaik hat wiringPi früher auch pollen genutzt, gibt jetzt wohl nen Kernelpatch der wirklich nen "richtigen" Interrupt am GPIO auslösen kann.

Jetzt ist nur die Frage, dass ich mehrere von den Platinen habe, und das auch noch in verschiedenen Unterverteilungen. Leider habe ich nicht genug Kabel, da jetzt für jede Platine ein Kabel zum Pi zu ziehen.

Deshalb brauch ich schon sowas wie eine Status abfrage ob gerade ein Zugriff auf das Reading stattfindet.
Geht das?
Titel: Antw:Notify auf Browser-refresh legen
Beitrag von: justme1968 am 15 Januar 2014, 14:57:13
nein. da geht eben nicht.

eben deswegen noch etwas vor deine platinen hängen das das lokal per interrupt (oder pollen :) macht und den aktuellen status an fhem meldet. z.b. ein arduino mit firmata.

gruss
  andre