Hallo,
ich bin recht neu hier und hab mich hier im Forum und im netz mit dem Thema auseinander gesetzt, komme aber nicht weiter.
Ich habe fhem so eingerichtet das er mehrere Geräte erkennt, ob so angemeldet sind über wlan oder nicht.
Nun will ich meinen Server einschalten, sobald ein Gerät angemeldet ist und ausschalten, wenn sich das letzte abmeldet.
Mit einem Gerät funktioniert das ohne Probleme, aber so bald ich es mit einem 2ten versuch steckt ich in der Sackgasse.
Ich habe mehrere Lösungen versucht ohne Erfolg.
Derzeitiger versuch ist:
define server_an at +*00:00:15 {if(Value("PC_1") eq "present") || (Value("PC_2") eq "present") { fhem("set server on") } else { fhem("set server off")}}
Hoffe mir kann wer weiterhelfen.
Schöne Grüsse
Sven
Ich würde (und mach es so) mit einem notify und Dummy machen.
Also mal theoretisch so:
Wenn PC1 oder PC2 present sind, wird der Dummy eingeschalten, wenn der Dummy an ist, wird der Server angeschalten.
Dein Code müsste aus dem Bauch raus so lauten:
define AT.Check at +*00:05 {\
if (ReadingsVal("PC_1", "state", "") eq "present" || ReadingsVal("PC_2", "state", "") eq "present") {\
fhem("set server on");;\
}\
else {\
fhem("set server off");;\
}\
}
Es geht natürlich auch mit deiner Schreibweise, aber dann musst du glaube ich Value gegen State tauschen, bin mir aber gerade nicht sicher.
Hallo,
Zitataber dann musst du glaube ich Value gegen State tauschen,
Nein - Value passt schon.
Es fehlen nur noch 2 Klammen - einmal ( und einmal )
if((Value("PC_1") eq "present") || (Value("PC_2") eq "present"))
Es sollte aber auch eine entsprechende Fehlermeldung im Logfile stehen ;)
Grüße
Ich empfehle einen Blick auf das Residents Modul! Das macht genau diese Dinge perfekt, finde ich!
Sent from my iPhone using Tapatalk
@Puschel74: Eigentlich sind da sind jetzt 4 Klammern zu viel:
if(Value("PC_1") eq "present" || Value("PC_2") eq "present")
Funktioniert aber beides. ;)
structure so wie in vielen beispielen hier im forum und im wiki ist auch noch eine möglichkeit. watchdog sollst du dir auch ansehen.
gruss
andre
Danke für die vielen Infos
mit denn 2 klammern zusätzlich hat es jetzt erst mal geklappt.
Ich schau mir aber auch mal die anderen Lösungen an.
Tu mir nur noch da etwas schwer
grüsse
sven
Hallo,
Zitat von: marvin78 am 10 Juli 2014, 08:40:22
@Puschel74: Eigentlich sind da sind jetzt 4 Klammern zu viel:
if(Value("PC_1") eq "present" || Value("PC_2") eq "present")
Funktioniert aber beides. ;)
Ja, hab ich dann auch gesehen 8)
Ich klammer lieber einmal zuviel als zuwenig - abspecken geht immer noch ;D
Grüße
Hallo,
ich versuche auch mit Presence und mehreren Teilnehmern zu arbeiten, doch irgendwie, bekomme ich die Verknüpfung nicht hin.
Getrennt funktioniert das, aber in Kombination nicht.
Folgendes soll passieren:
Wenn Coolstrean present soll licht angehen, ebenso bei Petra_Handy present.
Das klappt auch.
Das Licht soll aber nur ausgehen wenn Coolstream und Petra Handy absent sind.
Hier einmal der komplette Code direkt aus der fhem.cfg kopiert.
Vielleicht kann jemand einmal rüber schauen wie ich Coolstream und Petra_Handy zusammen bekomme, damit das Licht ausgeht.
define Coolstream PRESENCE fritzbox Torsten-TV-WZ
attr Coolstream event-on-change-reading state
define Coolstream_Licht_AN notify Coolstream:present {if ((localtime)[2]~~[10..21]) {fhem("set Weihnachts_Beleuchtung3 off-for-timer 1")}}
define Coolstream_Licht_Aus notify Coolstream:absent set Weihnachts_Beleuchtung3 on-for-timer 1
attr Coolstream_Licht_Aus verbose 5
define Petra_Handy PRESENCE lan-ping Petra-Handy-S3
attr Petra_Handy event-on-change-reading state
define Petra_Handy_Licht_AN notify Petra_Handy:present {if ((localtime)[2]~~[6..21]) {fhem("set Weihnachts_Beleuchtung3 off-for-timer 1")}}
define Petra_Handy_Licht_Aus notify Petra_Handy:absent set Weihnachts_Beleuchtung3 on-for-timer 1
Vielen Dank