Wlan Erkennung ob ich Zuhause bin + MAX Steuerung

Begonnen von ChrisW, 18 Dezember 2012, 10:20:57

Vorheriges Thema - Nächstes Thema

ChrisW

                                                     

Hallo,
es passiert mir immer öfter das ich per MAX! Eco Schalter auf ECO Schalte,
aber vergesse wenn ich nach Hause komme wieder auf AUTO zu stellen.
Das bedeutet morgends alles zimlich Kalt.

Ich habe öfters mal gelesen das es eine Erkennung gibt über die Fritzbox ob
WLAN geräte eingebucht sind.
Habe eine Fhem5.3 Neu Installation.

Hat jemand eine Aktuelle Anleitung wie ich vorgehen muss?
Der Wiki eintrag ist zimlich alt und stimmt sicher mit der 3.5 nicht mehr
überein ?

Ich habe Fhem NICHT auf der Fritzbox sondern auf einem WIn7 64Bit Notebook.
Aber eine Fritzbox im Hause angeschlossen für WLAN.

Anschließend würde ich gern wenn 2 Geräte eingebucht sind das MAX sich auf
AUTO setzt.



--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Raspberry PI3 mit allem möglichen.

Guest

Originally posted by: <email address deleted>

Ich kann dir mal das Beispiel meiner Weihnachtslichter in der Wohnung
geben, läuft auf einem Linux-Server...

--- user_anwesenheit.cfg ---
# Anwesenheit von Tino, HTC Sensation XE

define Anwesenheit_Tino dummy
attr Anwesenheit_Tino loglevel 6
attr Anwesenheit_Tino room Anwesenheit
attr Anwesenheit_Tino setList on off

define Anwesenheit_Tino_FileLog FileLog ./log/Anwesenheit_Tino.log
Anwesenheit_Tino
attr Anwesenheit_Tino_FileLog logtype text
attr Anwesenheit_Tino_FileLog room Logfiles

define Job_AnwesendTino at +*00:01:00 { \
  use Net::Ping;; \
  my $ip = "sensation";; \
  my $p = Net::Ping->new("tcp", 1, 64);; \
  if ($p->ping($ip)) { \
    if ( Value("Anwesenheit_Tino") eq "off" ) { \
      fhem("set Anwesenheit_Tino on");; \
    } \
  } \
  else { \
    if ( Value("Anwesenheit_Tino") eq "on" ) { \
      fhem("set Anwesenheit_Tino off");; \
    } \
  } \
}

Hier wird jede Minute ein TCP-Ping (nicht ICMP, da FHEM keine root-Rechte
hat) auf mein Smartphone abgefeuert und der dummy *Anwesenheit_Tino*gesetzt, wenn er vorher nicht schon den gleichen Status hatte. Dieses
"Zwischen-if" benötige ich, damit ein *notify* nicht jede Minute ausgelöst
wird.

--- user_beleuchtung.cfg ---
# zwischen Sonnenuntergang und 22 Uhr einschalten, falls jemand kommt

define Job_Wohnzimmer_Weihnachtslicht_Abends1 notify
(Anwesenheit_Nicole:on|Anwesenheit_Tino:on) { \
  my ($sec,$min,$hour,$heutetag,$heutemonat,$heutejahr,$wday,$yday,$isdst)
= localtime(time);; \
  if ( !(isday()) && $hour<22 && $hour>15 ) { \
    if ( Value("Wohnzimmer_FunkSteckdose1") eq "off" ) { \
      fhem("set Wohnzimmer_FunkSteckdose1 on");; \
    } \
    if ( Value("Wohnzimmer_FunkSteckdose2") eq "off" ) { \
      fhem("set Wohnzimmer_FunkSteckdose2 on");; \
    } \
    if ( Value("Wohnzimmer_FunkSteckdose3") eq "off" ) { \
      fhem("set Wohnzimmer_FunkSteckdose3 on");; \
    } \
  } \
}
attr Job_Wohnzimmer_Weihnachtslicht_Abends1 room Wohnzimmer

Hier werden drei Funksteckdosen eingeschaltet, wenn ich Nachmittags/Abend
nach Hause komme.

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Guest

Originally posted by: <email address deleted>

Kleiner Nachtrag:

Solltest du einen Windows 7 Rechner prüfen wollen, musst du einen freien,
offenen Port finden und das Skript um eine Zeile erweitern:

  my $p = Net::Ping->new("tcp", 1, 64);; \
  $p->port_number("139");; \

Hier geht´s auf Port 139, welchen z.B. die Windows-Dateifreigabe verwendet.
Die lokale Firewall muss diese im lokalen Netz natürlich verfügbar machen.

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

ChrisW

                                                     

Hm es läuft nicht so recht. Datei wird per include geladen stehen auch
keine Fehler aber es läuft wohl nicht durch Dummys musste ich manuell
anlegen aner es passiert nichts im Log steht nur das es geladen wurde aber
kein Fejler nichts :(
Im Dummy steht nur ??? drin

Am Dienstag, 18. Dezember 2012 11:15:16 UTC+1 schrieb kossmann:
>
> Kleiner Nachtrag:
>
> Solltest du einen Windows 7 Rechner prüfen wollen, musst du einen freien,
> offenen Port finden und das Skript um eine Zeile erweitern:
>
>   my $p = Net::Ping->new("tcp", 1, 64);; \
>   $p->port_number("139");; \
>
> Hier geht´s auf Port 139, welchen z.B. die Windows-Dateifreigabe
> verwendet. Die lokale Firewall muss diese im lokalen Netz natürlich
> verfügbar machen.
>

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Raspberry PI3 mit allem möglichen.

Guest

Originally posted by: <email address deleted>

Im Dummy steht so lange "???" bis, er erstmalig gefüllt wird. Hier liegt
ein Fehler in meinem Skript!!! Dieses geht davon aus, dass "on" oder "off"
gesetzt ist und ändert dies dann. Dies habe ich nachträglich eingebaut, da
sonst das *notify* jede Minute aktiv geworden wäre und ich die Lichter
niemals über die Fernbedienung ausschalten hätte können, ohne dass sie
spätestens 60 Sekunden später wieder an gewesen wären. Da muss ich mal
nachbessern.

Dir hilft bis dahin erst mal ein *set Anwesenheit_Chris off* - eine Minute
später wird das dann geprüft und ggf. korrigiert.

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

ChrisW

                                                     

Er hatte die cfg komplett den inhalt gelöscht darum auch keine Logs !!

2012.12.18 12:47:40 1: configfile: Unknown command attr, try help
Valid value for verbose are 0,1,2,3,4,5
Anwesenheit_Chris already defined, delete it first
Anwesenheit_Tanja already defined, delete it first



Am Dienstag, 18. Dezember 2012 12:43:34 UTC+1 schrieb Chris:
>
> Hm es läuft nicht so recht. Datei wird per include geladen stehen auch
> keine Fehler aber es läuft wohl nicht durch Dummys musste ich manuell
> anlegen aner es passiert nichts im Log steht nur das es geladen wurde aber
> kein Fejler nichts :(
> Im Dummy steht nur ??? drin
>
> Am Dienstag, 18. Dezember 2012 11:15:16 UTC+1 schrieb kossmann:
>>
>> Kleiner Nachtrag:
>>
>> Solltest du einen Windows 7 Rechner prüfen wollen, musst du einen freien,
>> offenen Port finden und das Skript um eine Zeile erweitern:
>>
>>   my $p = Net::Ping->new("tcp", 1, 64);; \
>>   $p->port_number("139");; \
>>
>> Hier geht´s auf Port 139, welchen z.B. die Windows-Dateifreigabe
>> verwendet. Die lokale Firewall muss diese im lokalen Netz natürlich
>> verfügbar machen.
>>
>

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Raspberry PI3 mit allem möglichen.

Guest

Originally posted by: <email address deleted>

Aus dem Grund habe ich meine Konfiguration in Einzeldateien gesetzt und
FHEM nur Leserechte darauf erteilt. FHEM selbst kann mit der fhem.cfg
machen was es will, die kann ich immer wieder auf meinen gewünschten Inhalt
zurück drehen (globale Attribute und include Zeilen).

Den "save" Befehl in der Weboberfläche verfluche ich mittlerweile ;-) Mal
gucken, ob man den ausblenden kann...

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

ChrisW

                                                     

Cool es funktioniert nach dem einmaligen setzen hat er es gerafft ;)
Ja nur Leserechte ist eine GUTE IDEE

So jetzt benötige ich nurnoch eine möglichkeit wie er folgenden Befehl
abschickt:
set MAX_Bad desiredTemperature auto


Ich möchte genau wie bei deinem LICHT verhindern das ich nicht mehr gewollt
eine ECO / Bestimmte Temeratur am Regler einstellen kann.

*Der Fall ist also ( Haus wird Verlassen ) :*
*Anwesenheit_Chris off*
UND
*Anwesenheit_Tanja off*
( Wenn möglich für mehr als 15 Minuten )

Dann EINMALIG:
set MAX_Bad desiredTemperature ECO

Sobald:
*Anwesenheit_Chris on*
*ODER*
*Anwesenheit_Tanja ON**
*
*
*
*Einmalig:*
set MAX_Bad desiredTemperature AUTO*
*

(Somit ist der ECO Falschter zwar "Nutzlos" aber egal.. )

Ich möchte jedoch verhindern bei Handy Neustart oder kein WLAN ( gerade im
Keller/Garten kurz ) Das er immer hin und her wechselt.





Am Dienstag, 18. Dezember 2012 12:52:10 UTC+1 schrieb kossmann:
>
> Aus dem Grund habe ich meine Konfiguration in Einzeldateien gesetzt und
> FHEM nur Leserechte darauf erteilt. FHEM selbst kann mit der fhem.cfg
> machen was es will, die kann ich immer wieder auf meinen gewünschten Inhalt
> zurück drehen (globale Attribute und include Zeilen).
>
> Den "save" Befehl in der Weboberfläche verfluche ich mittlerweile ;-) Mal
> gucken, ob man den ausblenden kann...
>

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Raspberry PI3 mit allem möglichen.

Guest

Originally posted by: <email address deleted>

... und da bin ich momentan auch noch überfragt - zumindest, wenn es keine
Bastellösung mit mehreren minütlich ablaufenden Checks werden soll.

Man kann natürlich einen Dummy definieren, in dem Zeit gezählt wird. So
einen haben ich auch, allerdings um die Onlinezeit eines Gerätes zu
überwachen - hier muss ich zwangsläufig jede Minute prüfen, ob das Ding an
ist (in diesem Fall mit einem *Anwesenheit_Vaio*, müsste eigentlich *
Online_Vaio* heißen - dies ist übrigens das angesprochene Win7-Gerät ;-) ).

define Kinderzimmer_Laufzeit_Vaio dummy
attr Kinderzimmer_Laufzeit_Vaio room Kinderzimmer
attr Kinderzimmer_Laufzeit_Vaio loglevel 6

define Job_Kinderzimmer_Laufzeit_Vaio_Null at *00:00 set
Kinderzimmer_Laufzeit_Vaio 0
attr Job_Kinderzimmer_Laufzeit_Vaio_Null room Kinderzimmer

define Job_Kinderzimmer_Laufzeit_Vaio_Count notify Anwesenheit_Tim:on { \
  my $count = Value("Kinderzimmer_Laufzeit_Vaio");; \
  $count++;; \
  fhem("set Kinderzimmer_Laufzeit_Vaio " . $count);; \
}
attr Job_Kinderzimmer_Laufzeit_Vaio_Count room Kinderzimmer

Um 00:00 Uhr wird der Dummy auf 0 gestellt und anschließend bei jedem *
notify* um 1 nach oben gezählt. Mit dem Wert kann man dann machen, was man
möchte, z.B. bei 240 Minuten eine Lichtorgel loslassen, die Feuerwehr rufen
o.ä. ;-)

Man kann in einem solchen Dummy natürlich auf eure Offlinezeiten zählen und
ab 15 dann in den ECO-Mode schalten.

Ich weiß allerdings nicht, ob FHEM von sich aus eine wesentlich elegantere
Variante bietet.

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

ChrisW

                                                     

Ui okay das übersteigt meine Kenntnisse dann doch etwas ;)  Hab gedacht man
könnte es mit dem Log auswerten.
Wenn man z.b jetzt die Zeit Zwischen den Log einträgen ausrechnen lässt ?
Im Log steht ja Datum udn Zeit wann der Status gesetzt wird. Wenn man nun
immer die 2 werte miteinander vergleicht ob die mehr als 15 Minuten sind ?

Am Dienstag, 18. Dezember 2012 13:23:21 UTC+1 schrieb kossmann:
>
> ... und da bin ich momentan auch noch überfragt - zumindest, wenn es keine
> Bastellösung mit mehreren minütlich ablaufenden Checks werden soll.
>
> Man kann natürlich einen Dummy definieren, in dem Zeit gezählt wird. So
> einen haben ich auch, allerdings um die Onlinezeit eines Gerätes zu
> überwachen - hier muss ich zwangsläufig jede Minute prüfen, ob das Ding an
> ist (in diesem Fall mit einem *Anwesenheit_Vaio*, müsste eigentlich *
> Online_Vaio* heißen - dies ist übrigens das angesprochene Win7-Gerät ;-)
> ).
>
> define Kinderzimmer_Laufzeit_Vaio dummy
> attr Kinderzimmer_Laufzeit_Vaio room Kinderzimmer
> attr Kinderzimmer_Laufzeit_Vaio loglevel 6
>
> define Job_Kinderzimmer_Laufzeit_Vaio_Null at *00:00 set
> Kinderzimmer_Laufzeit_Vaio 0
> attr Job_Kinderzimmer_Laufzeit_Vaio_Null room Kinderzimmer
>
> define Job_Kinderzimmer_Laufzeit_Vaio_Count notify Anwesenheit_Tim:on { \
>   my $count = Value("Kinderzimmer_Laufzeit_Vaio");; \
>   $count++;; \
>   fhem("set Kinderzimmer_Laufzeit_Vaio " . $count);; \
> }
> attr Job_Kinderzimmer_Laufzeit_Vaio_Count room Kinderzimmer
>
> Um 00:00 Uhr wird der Dummy auf 0 gestellt und anschließend bei jedem *
> notify* um 1 nach oben gezählt. Mit dem Wert kann man dann machen, was
> man möchte, z.B. bei 240 Minuten eine Lichtorgel loslassen, die Feuerwehr
> rufen o.ä. ;-)
>
> Man kann in einem solchen Dummy natürlich auf eure Offlinezeiten zählen
> und ab 15 dann in den ECO-Mode schalten.
>
> Ich weiß allerdings nicht, ob FHEM von sich aus eine wesentlich elegantere
> Variante bietet.
>

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Raspberry PI3 mit allem möglichen.

Guest

Originally posted by: <email address deleted>

FHEM kann mit Sicherheit auch in die eigenen Logdateien gucken und parsen,
was darin steht. Ob dies dann allerdings einfacher wird, ist fraglich -
hier wird man sicher auch mit Perl-Code heran gehen müssen...

Soweit bin ich aber auch noch nicht ;-)

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

Guest

Originally posted by: <email address deleted>

Wie du es (wenn auch auf nicht elegante Weise) hin bekommen kannst, steht
ja alles schon in meinen Beispielen. Die Anwesenheit minütlich (oder alle 5
Minuten) prüfen lassen und bei einem *notify ... on* das *set* Kommando
absetzen. Parallel dazu könntest du auch die Zeit zählen (sowohl on-, als
auf offline) um eine Aktion erst nach 15 konstanter An- oder Abwesenheit zu
schalten. Das ganze kann man wahrscheinlich auch in einem Dummy machen,
indem man den Online/Offline-Status direkt als Zahl setzt und erst bei >15
eine Aktion durchführt.

In den Definitionen musst du natürlich mit Perl programmieren. Da sind
UND/ODER-Verknüpfungen in IF-Abfragen schon Pflichtprogramm. Hier solltest
du entsprechende Grundlagen mitbringen oder dir erst (unabhängig von FHEM)
aneignen - die Dinge, die man hier benötigt, sollte man sich in 1-2 Stunden
problemlos aneignen können, wenn man in irgendeiner Programmiersprache
schon mal mit Variablen und IF-Abfragen gearbeitet hat.

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

ChrisW

                                                     

Hm okay ich versuch mal kann ich da snicht einfach so machen ?
define Job_ANWESENHEIT_Chis_MAX_AUTO notify Anwesenheit_Chris:on { \
 
  fhem("set MAX_Bad desiredTemperature auto "  \
}

Wobei so ja die Auto jedes mal gesetzt wird :P

Am Dienstag, 18. Dezember 2012 14:02:45 UTC+1 schrieb kossmann:
>
> Wie du es (wenn auch auf nicht elegante Weise) hin bekommen kannst, steht
> ja alles schon in meinen Beispielen. Die Anwesenheit minütlich (oder alle 5
> Minuten) prüfen lassen und bei einem *notify ... on* das *set* Kommando
> absetzen. Parallel dazu könntest du auch die Zeit zählen (sowohl on-, als
> auf offline) um eine Aktion erst nach 15 konstanter An- oder Abwesenheit zu
> schalten. Das ganze kann man wahrscheinlich auch in einem Dummy machen,
> indem man den Online/Offline-Status direkt als Zahl setzt und erst bei >15
> eine Aktion durchführt.
>
> In den Definitionen musst du natürlich mit Perl programmieren. Da sind
> UND/ODER-Verknüpfungen in IF-Abfragen schon Pflichtprogramm. Hier solltest
> du entsprechende Grundlagen mitbringen oder dir erst (unabhängig von FHEM)
> aneignen - die Dinge, die man hier benötigt, sollte man sich in 1-2 Stunden
> problemlos aneignen können, wenn man in irgendeiner Programmiersprache
> schon mal mit Variablen und IF-Abfragen gearbeitet hat.
>

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Raspberry PI3 mit allem möglichen.

Guest

Originally posted by: <email address deleted>

In diesem Fall bräuchtest du den Perl-Code noch nicht einmal...

define Job_ANWESENHEIT_Chis_MAX_AUTO notify Anwesenheit_Chris:on set
MAX_Bad desiredTemperature auto

Ich bin aber selbst noch nicht lange dabei (2 Wochen) und kenne mich auch
nicht so gut aus. Wenn du allerdings die 15 Minuten prüfen möchstest, lass
den Code so wie er ist und baue noch das IF herum.

Du hast allerdings in deinem Beispiel allerdings das Schließen der runden
Klammer vergessen: *fhem("...")* Dies musst du zwingend nachholen. Das
fehlende "r" in deinem Namen ist vorne für FHEM egal, für dich selbst aber
vielleicht nicht ;-)

Zusätzlich würde ich mir direkt angewöhnen, hinter jedem Perl-Befehl ein
Semikolon zu setzen, in FHEM-Code an doppelt, also *fhem("...");;* Dann
kannst du problemlos eine Zeile dahinter schreiben, ohne dass das Semikolon
dann fehlt. Hier musst du es nicht, da es der letzte Befehl in einem Block *
{}* ist, aber schaden wird es auch nicht. Nach einem schließenden Block,
also hinter dem *}* muss auch kein Semikolon stehen, hier würde es auch
unübersichtlich, daher setzte ich dort auch keine.

Um nicht jede Minute das *auto* zu setzen, guck dir oben mal *
Anwesenheit_Tino* an. Hier wird nur *on* gesetzt, wenn vorher *off* war -
und nur beim Setzen eines Wertes gibt´s ein *notify*. Also nur, wenn sich
wirklich etwas ändert. Anders ist es bei *Anwesenheit_Tim* (soll ja
eigentlich *Online_Vaio* heißen) - hier benötige ich jede Minute ein *notify
* - dort fehlt die Abfrage, ob es einen Wert gibt, es wird einfach *on*oder
*off* gesetzt.


Am Dienstag, 18. Dezember 2012 14:14:16 UTC+1 schrieb Chris:
>
> Hm okay ich versuch mal kann ich da snicht einfach so machen ?
> define Job_ANWESENHEIT_Chis_MAX_AUTO notify Anwesenheit_Chris:on { \
>  
>   fhem("set MAX_Bad desiredTemperature auto "  \
> }
>
> Wobei so ja die Auto jedes mal gesetzt wird :P
>
> Am Dienstag, 18. Dezember 2012 14:02:45 UTC+1 schrieb kossmann:
>>
>> Wie du es (wenn auch auf nicht elegante Weise) hin bekommen kannst, steht
>> ja alles schon in meinen Beispielen. Die Anwesenheit minütlich (oder alle 5
>> Minuten) prüfen lassen und bei einem *notify ... on* das *set* Kommando
>> absetzen. Parallel dazu könntest du auch die Zeit zählen (sowohl on-, als
>> auf offline) um eine Aktion erst nach 15 konstanter An- oder Abwesenheit zu
>> schalten. Das ganze kann man wahrscheinlich auch in einem Dummy machen,
>> indem man den Online/Offline-Status direkt als Zahl setzt und erst bei >15
>> eine Aktion durchführt.
>>
>> In den Definitionen musst du natürlich mit Perl programmieren. Da sind
>> UND/ODER-Verknüpfungen in IF-Abfragen schon Pflichtprogramm. Hier solltest
>> du entsprechende Grundlagen mitbringen oder dir erst (unabhängig von FHEM)
>> aneignen - die Dinge, die man hier benötigt, sollte man sich in 1-2 Stunden
>> problemlos aneignen können, wenn man in irgendeiner Programmiersprache
>> schon mal mit Variablen und IF-Abfragen gearbeitet hat.
>>
>

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com

ChrisW

                                                     

Hm okay vielleicht hat ja noch jemand eine idee.
Derzeitige Lösung wäre jetzt ohen die 15 Minuten überwachung wie würde ich
das den hingekommen ?

Am Dienstag, 18. Dezember 2012 13:49:47 UTC+1 schrieb kossmann:
>
> FHEM kann mit Sicherheit auch in die eigenen Logdateien gucken und parsen,
> was darin steht. Ob dies dann allerdings einfacher wird, ist fraglich -
> hier wird man sicher auch mit Perl-Code heran gehen müssen...
>
> Soweit bin ich aber auch noch nicht ;-)
>

--
To unsubscribe from this group, send email to
fhem-users+unsubscribe@googlegroups.com
Raspberry PI3 mit allem möglichen.