Hauptmenü

was ist longpoll

Begonnen von masterpete23, 29 Januar 2014, 06:26:53

Vorheriges Thema - Nächstes Thema

masterpete23

Moin,
PDF durchsucht.
Forum auch (zuviele Treffer)

Was ist longpoll?

fiedel

Aus der Commandref:

Zitatlongpoll
Affects devices states in the room overview only.
In this mode status update is refreshed more or less instantaneously, and state change (on/off only) is done without requesting a complete refresh from the server. Default is on.

Longpoll aktualisiert dir wenn gesetzt, die Zustände der aktuell angezeigten Geräte, ohne dass ein komplettes Refresh der Seite notwendig ist.
FeatureLevel: 6.1 auf Wyse N03D ; Deb. 11 ; Perl: v5.14.2 ; IO: HM-MOD-RPI-PCB + VCCU|CUL 868 V 1.66|LinkUSBi |TEK603
HM: SEC-SCO|SCI-3-FM|LC-SW4-PCB|ES-PMSW1-PL|RC-4-2|SEN-MDIR-O|SEC-WDS-2
CUL: HMS100TF|FS20 S4A-2 ; OWDevice: DS18S20|DS2401|DS2406|DS2423

Rince

Konkret:
Du hast fhem offen und siehst ein Icon, zum Beispiel für eine ausgeschaltete Lampe. Jetzt schaltest du die Lampe ein.
Ohne logpoll bleibt das Icon auf aus, bis du F5 drückst. Mit longpoll ändert sich halt automatisch auch das Icon sofort, in diesem Beispiel von aus auf an :)
Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

masterpete23

Ok - hört sich gut an-
Ist ja Standard also brauch ich nichts umstellen wenn ich das so will wie Rince schreibt

Owel

Gibt es die Möglichkeit Longpoll anzupassen?

Ich habe bei mir Dummys definiert (Lichtschalter) und nun kann ich mit off/on mein Licht schalten.
Jedoch kann ich das auch noch zusätzlich außerhalb von FHEM mit den ganz normalen Tastern in der Wand.
Jetzt bekommt FHEM einen solchen Statuswechsel aber nicht mit.
Es muss erst der Zustand ausgelesen werden.
Könnte ich dieses Auslesen in Longpoll einbauen?
Kann man da ein Notify drauf setzen?

Grüße
Owel

betateilchen

das kommt drauf an, welche Schaltelemente Du verwendest und ob diese eine Rückmeldung senden können.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

UliM

Zitat von: Owel am 29 Januar 2014, 08:41:27
Jetzt bekommt FHEM einen solchen Statuswechsel aber nicht mit.
Es muss erst der Zustand ausgelesen werden.
Könnte ich dieses Auslesen in Longpoll einbauen?

Wenn Du den Wert auf das dummy-device schreibst, musst Du dafür set benutzen -> fhem("set dummy Wert")

Denn set löst einen Systemevent aus, und ein Systemevent triggert longpoll.
=8-)
RPi4/Raspbian, CUL V3 (ca. 30 HomeMatic-devices), LAN (HarmonyHub, alexa etc.).  Fördermitglied des FHEM e.V.

Puschel74

Hallo,

ZitatJedoch kann ich das auch noch zusätzlich außerhalb von FHEM mit den ganz normalen Tastern in der Wand.
Da wir nicht wissen welche Hardware verwendet wird können wir hier nur raten.

http://forum.fhem.de/index.php/topic,16311.0.html

Wenn Owel aber schon schreibt das FHEM das nicht mitbekommt wird auch ein Dummy nicht helfen  ;)

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Owel

Also dann schreibt mal Owel was er für Hardware da so hat.

Also Aktuelles FHEM läuft auf einem PI.
An diesem sind über I2C jeweils Input und Output Platinen angeschlossen. Genau die hier :Input output

An diese sind wiederrum Eltako S12 200-24VDC angeschlossen. Dieses Eltako hat 2 Schließer. Einer mit 230V der das Licht schaltet, und einmal 24V die in die Input-Platine gehen.

Mittels der Output-Platine kann ich nun einen Stromstoß auf ads Eltako geben, und dieses Schaltet.
Mit der Input Platine kann ich den aktuellen Zustand am Eltako auslesen.

Zusätzlich sind ganz normale Taster auch mit dem Eltako verbunden, so kann ich bei einem Totalausfall von FHEM immer noch Licht schalten.
FHEM kann also aktiv schalten und lauschen.

In FHEM sieht das dann so aus:

fhem.cfg
define Licht_Buero dummy
attr Licht_Buero Floor eg
attr Licht_Buero InputNumber 8
attr Licht_Buero room Licht
attr Licht_Buero setList on off

define Trigger_Light notify Licht.* {checkLight("@")}


99_myUtils.pm
sub checkLight($) {
  my ($device) = @_;
  my $state = Value($device);
  my $foo = 0;
  my $floor = AttrVal("$device","Floor","0");
  my $inputNumber = AttrVal("$device","InputNumber","0");
  Log(1,"floor: $floor");
  if ( $floor eq "eg" )
  {
    $foo = `sudo i2cget -y 1 0x3f`;
  } elsif ( $floor eq "og" ) {
    $foo = `sudo i2cget -y 1 0x3d`;
  } else {
    Log (1,AttrVal("$device","Floor","0"));
    return;
  }
  $foo = 255 - hex $foo;
  if ( ($foo | $inputNumber) == $foo ){
    if ($state eq "on")
    {
      Log(1,"bereits on")
    } else {
      Log(1,"trigger off");
      my $bar = `/opt/fhem/utils/light_manager_$floor $inputNumber`;
      fhem("setstate $device off");
    }
   
  } else {
    if ($state eq "off") {
      Log(1,"bereits off")
    } else {
      Log(1,"trigger on");
      `/opt/fhem/utils/light_manager_$floor $inputNumber`;
      fhem("setstate $device on");
    }
   
  }

}
1;


light_manager_eg

#!/bin/bash 

#argument check
if [ -z "$1" ]
  then
    echo "No argument supplied"
    exit 1
fi

if  [[ $1 != [1,2,4,8] ]]; then
    echo "argument must be 1, 2, 4 or 8"
    exit 2
fi

sudo i2cset -y 1 0x23 $((255 - $1))
sudo i2cset -y 1 0x23 0xff

exit 0


Funkioniert super und zuverlässig.
Bei einem On bzw Off liest FHEM erstmal den aktuellen Zustand des entsprechenden Eltakos ein, und entscheidet dann ob es schalten muss oder nicht.
Leider aktualisiert sich bei der o.g. config der Status nur beim Schalten.
Pollen wollte ich vermeiden, denn dann müsste ich ja jede sek. Pollen ob jemand extern über Taster Licht geschaltet hat.

Grüße
Owel