Moin,
PDF durchsucht.
Forum auch (zuviele Treffer)
Was ist longpoll?
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.
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 :)
Ok - hört sich gut an-
Ist ja Standard also brauch ich nichts umstellen wenn ich das so will wie Rince schreibt
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
das kommt drauf an, welche Schaltelemente Du verwendest und ob diese eine Rückmeldung senden können.
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-)
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 (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
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 (http://horter.de/shop/i2c_komponenten_i2c_hutschienenmodule/bausatz_i2c_input_5__24v_8_bit_fuer_din_schiene4684.html) output (http://horter.de/shop/i2c_komponenten_i2c_hutschienenmodule/bausatz_i2c_output_5__24v_8_bit_fuer_din_schiene4685.html)
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