FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Waschbär am 09 Juli 2014, 19:40:15

Titel: Bei Anwesenheit PRESENCE schalten, mit mehreren Teilnehmern
Beitrag von: Waschbär am 09 Juli 2014, 19:40:15
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
Titel: Antw:Bei Anwesenheit PRESENCE schalten, mit mehreren Teilnehmern
Beitrag von: Mitch am 09 Juli 2014, 19:50:03
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.
Titel: Antw:Bei Anwesenheit PRESENCE schalten, mit mehreren Teilnehmern
Beitrag von: Puschel74 am 09 Juli 2014, 20:46:12
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
Titel: Antw:Bei Anwesenheit PRESENCE schalten, mit mehreren Teilnehmern
Beitrag von: bgewehr am 10 Juli 2014, 08:17:38
Ich empfehle einen Blick auf das Residents Modul! Das macht genau diese Dinge perfekt, finde ich!


Sent from my iPhone using Tapatalk
Titel: Antw:Bei Anwesenheit PRESENCE schalten, mit mehreren Teilnehmern
Beitrag 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. ;)
Titel: Antw:Bei Anwesenheit PRESENCE schalten, mit mehreren Teilnehmern
Beitrag von: justme1968 am 10 Juli 2014, 09:42:52
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
Titel: Antw:Bei Anwesenheit PRESENCE schalten, mit mehreren Teilnehmern
Beitrag von: Waschbär am 10 Juli 2014, 16:06:06
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
Titel: Antw:Bei Anwesenheit PRESENCE schalten, mit mehreren Teilnehmern
Beitrag von: Puschel74 am 10 Juli 2014, 17:00:46
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
Titel: Antw:Bei Anwesenheit PRESENCE schalten, mit mehreren Teilnehmern
Beitrag von: Thoffi1978 am 06 Dezember 2014, 13:03:15
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