MacRechnerbenutzung erzeugt Anwesenheitserkennung

Problemlösungen und Hinweise von allgemeinem Interesse zur Haussteuerung mit HomeMatic

Moderator: Co-Administratoren

Benutzeravatar
jollyjinx
Beiträge: 129
Registriert: 18.03.2014, 14:04
Wohnort: Taufkirchen b. München
Danksagung erhalten: 2 Mal

MacRechnerbenutzung erzeugt Anwesenheitserkennung

Beitrag von jollyjinx » 09.01.2015, 20:49

Ich benutze eine anwesenheitsbasierte Heizungsteuerung. Dazu muss die CCU wissen wer im Haus ist bzw. wenn jemand im Haus ist, in welchen Räumen es warm werden soll.

Für diesen Anwendungszweck benutze ich ein Script auf meinem Mac MacUserPresence.perl, dass über einen cron eintrag alle paar Minuten aufgerufen wird und erkennt ob ich Büro sitze.

Zuerst wird geschaut ob der Bildschirm an ist ( ich schalte meinen Bildschirm aus sobald ich den Raum länger verlasse ( ctrl-shift-eject ) ) bzw. der Bildschirm geht irgenwann eh aus, der Rechner jedoch nicht.

Wenn nun also der Bildschirm hell ist wird noch geschaut ob bestimmte Monitore angeschlossen sind - d.h. ich bin im Büro und sitze wohl nicht auf der Couch oder im Garten.
Es ist noch eine Erkennung drin, die rausbekommt ob bestimmte Geräte über das Ethernet Kabel zu sehen sind. Die benutze ich aber nicht, denn ich kann nicht folgern ob in welchem Raum ich das Ethernet eingesteckt habe.

Evtl. erweitere ich das Script mal und es schaut dann auf dem (managed) Switch nach, an welchem Port - und somit in welchen Raum ich mich befinde.

Wenn also nun das Script weiss dass ich im Büro bin oder auch nicht wird eine Variable auf der CCU gesetzt. Auf der CCU läuft nun ein Programm, dass die Variable auf abwesend setzt, wenn sie eine gewisse Zeit nicht mehr gesetzt wurde ( z.B. ich bin nciht mehr im Haus oder der Mac schläft ).

Vielleicht hilft es ja dem einen oder Anderen - Patrick
114 Kanaele in 22 Geraeten, 10 Geraetetypen:
2x HM-Sec-WDS-2(Funk-Wassermelder), 1x HM-Sec-SC-2(Funk-Tuer-/ Fensterkontakt), 1x HM-RCV-50(CCU2 System), 2x HM-ES-TX-WM(Funk-Sender fuer Energiezaehler-Sensor), 7x HM-CC-RT-DN(Funk-Heizkoerperthermostat), 1x HM-LC-Sw4-SM(Funk-Schaltaktor 4-fach), 5x HM-Sec-SCo(Funk- Tuer-/Fensterkontakt optisch), 1x HM-ES-PMSw1-Pl(Funk-Schaltaktor mit Leistungsmessung), 1x HM-LC-Sw1-Pl-2(Funk-Schaltaktor 1-fach), 1x HM-LC-Sw1PBU-FM(Funk-Schaltaktor 1-fach fuer Markenschalter)
--------------------------------------------
Inventur mit Jollys InventurScript erzeugt.

mo111
Beiträge: 26
Registriert: 08.02.2015, 01:33

Re: MacRechnerbenutzung erzeugt Anwesenheitserkennung

Beitrag von mo111 » 16.02.2015, 19:54

jollyjinx hat geschrieben:Ich benutze eine anwesenheitsbasierte Heizungsteuerung. Dazu muss die CCU wissen wer im Haus ist bzw. wenn jemand im Haus ist, in welchen Räumen es warm werden soll.

Für diesen Anwendungszweck benutze ich ein Script auf meinem Mac MacUserPresence.perl, dass über einen cron eintrag alle paar Minuten aufgerufen wird und erkennt ob ich Büro sitze.

Zuerst wird geschaut ob der Bildschirm an ist ( ich schalte meinen Bildschirm aus sobald ich den Raum länger verlasse ( ctrl-shift-eject ) ) bzw. der Bildschirm geht irgenwann eh aus, der Rechner jedoch nicht.

Wenn nun also der Bildschirm hell ist wird noch geschaut ob bestimmte Monitore angeschlossen sind - d.h. ich bin im Büro und sitze wohl nicht auf der Couch oder im Garten.
Es ist noch eine Erkennung drin, die rausbekommt ob bestimmte Geräte über das Ethernet Kabel zu sehen sind. Die benutze ich aber nicht, denn ich kann nicht folgern ob in welchem Raum ich das Ethernet eingesteckt habe.

Evtl. erweitere ich das Script mal und es schaut dann auf dem (managed) Switch nach, an welchem Port - und somit in welchen Raum ich mich befinde.

Wenn also nun das Script weiss dass ich im Büro bin oder auch nicht wird eine Variable auf der CCU gesetzt. Auf der CCU läuft nun ein Programm, dass die Variable auf abwesend setzt, wenn sie eine gewisse Zeit nicht mehr gesetzt wurde ( z.B. ich bin nciht mehr im Haus oder der Mac schläft ).

Vielleicht hilft es ja dem einen oder Anderen - Patrick
Hallo Patrick

Ich würde gerne dein MacUserPresence Script benutzen um auf meiner DashUI ein Widget zu erzeugen welches mir anzeigt wenn jemand an meinem iMac sitzt. Leider kenn ich mich Scripts wenig aus. Vielleicht kannst du mir helfen.
Du sagst das Script läuft per cron Eintrag auf deinem Mac. Was bedeutet das?

Benutzeravatar
jollyjinx
Beiträge: 129
Registriert: 18.03.2014, 14:04
Wohnort: Taufkirchen b. München
Danksagung erhalten: 2 Mal

Re: MacRechnerbenutzung erzeugt Anwesenheitserkennung

Beitrag von jollyjinx » 16.02.2015, 21:03

Das Script einfach an eine Stelle legen die immer gleich ist - z.B. /Users/jolly/Binaries/MacUserPresence.perl

dann einfach die crontab auf der kommandozeile editieren (achtung vi ! ) und z.Bl folgendes eintragen:

SHELL=/bin/zsh
*/3 * * * * /usr/bin/perl /Users/jolly/Binaries/MacUserPresence.perl >/dev/null 2>&1

das wars. Auf dem Mac. Auf der CCU noch die Variable anlegen die das Script benutzt.
114 Kanaele in 22 Geraeten, 10 Geraetetypen:
2x HM-Sec-WDS-2(Funk-Wassermelder), 1x HM-Sec-SC-2(Funk-Tuer-/ Fensterkontakt), 1x HM-RCV-50(CCU2 System), 2x HM-ES-TX-WM(Funk-Sender fuer Energiezaehler-Sensor), 7x HM-CC-RT-DN(Funk-Heizkoerperthermostat), 1x HM-LC-Sw4-SM(Funk-Schaltaktor 4-fach), 5x HM-Sec-SCo(Funk- Tuer-/Fensterkontakt optisch), 1x HM-ES-PMSw1-Pl(Funk-Schaltaktor mit Leistungsmessung), 1x HM-LC-Sw1-Pl-2(Funk-Schaltaktor 1-fach), 1x HM-LC-Sw1PBU-FM(Funk-Schaltaktor 1-fach fuer Markenschalter)
--------------------------------------------
Inventur mit Jollys InventurScript erzeugt.

pix
Beiträge: 608
Registriert: 23.01.2012, 15:40
Danksagung erhalten: 1 Mal

Re: MacRechnerbenutzung erzeugt Anwesenheitserkennung

Beitrag von pix » 16.02.2015, 23:13

Hallo,
jollyjinx hat geschrieben:das wars. Auf dem Mac. Auf der CCU noch die Variable anlegen die das Script benutzt.
brauche ich die DisplayID, um sie im MacUserPresence.Perl einzutragen ($knowndisplays)? Wenn ja, wo bekomme ich die her?

Gruß
Pix
150 Kanäle in 75 Geräten und 103 CUxD-Kanäle in 25 CUxD-Geräten (HomeMatic, FS20), CCU1 FW1.519, AddOns: CUxD 1.0, dropbear, E-Mail 1.2, ftp_server und regaWatchdog.
Logik und Visualisierung mit ioBroker auf Mac OS X Node.js. Eingebundene Systeme: Sonos, Rademacher Homepilot, Roomba, Network-OWL. Danke für das Homematic-Inventur-Skript von EnergyStar

Benutzeravatar
jollyjinx
Beiträge: 129
Registriert: 18.03.2014, 14:04
Wohnort: Taufkirchen b. München
Danksagung erhalten: 2 Mal

Re: MacRechnerbenutzung erzeugt Anwesenheitserkennung

Beitrag von jollyjinx » 17.02.2015, 06:40

pix hat geschrieben:Hallo,
jollyjinx hat geschrieben:das wars. Auf dem Mac. Auf der CCU noch die Variable anlegen die das Script benutzt.
brauche ich die DisplayID, um sie im MacUserPresence.Perl einzutragen ($knowndisplays)? Wenn ja, wo bekomme ich die her?

Gruß
Pix

Die Display ID ist nur nötig wenn Du die Anwesenheit erst setzen willst wenn ein bestimmtes Display angeschlossen ist, sonst einfach weglassen.
Du kannst Das Script im debug mode laufen lassen "$debug=1" im Script setzen, damit Du sieht, ob er die Anwesenheit richtig erkennt.

Für iMac Benutzer ist es wahrscheinlich am einfachsten ethernet und display als 'undef' zu lassen, da die iMacs ja meist an einem Platz stehen.
114 Kanaele in 22 Geraeten, 10 Geraetetypen:
2x HM-Sec-WDS-2(Funk-Wassermelder), 1x HM-Sec-SC-2(Funk-Tuer-/ Fensterkontakt), 1x HM-RCV-50(CCU2 System), 2x HM-ES-TX-WM(Funk-Sender fuer Energiezaehler-Sensor), 7x HM-CC-RT-DN(Funk-Heizkoerperthermostat), 1x HM-LC-Sw4-SM(Funk-Schaltaktor 4-fach), 5x HM-Sec-SCo(Funk- Tuer-/Fensterkontakt optisch), 1x HM-ES-PMSw1-Pl(Funk-Schaltaktor mit Leistungsmessung), 1x HM-LC-Sw1-Pl-2(Funk-Schaltaktor 1-fach), 1x HM-LC-Sw1PBU-FM(Funk-Schaltaktor 1-fach fuer Markenschalter)
--------------------------------------------
Inventur mit Jollys InventurScript erzeugt.

mo111
Beiträge: 26
Registriert: 08.02.2015, 01:33

Re: MacRechnerbenutzung erzeugt Anwesenheitserkennung

Beitrag von mo111 » 17.02.2015, 22:10

jollyjinx hat geschrieben:Das Script einfach an eine Stelle legen die immer gleich ist - z.B. /Users/jolly/Binaries/MacUserPresence.perl

dann einfach die crontab auf der kommandozeile editieren (achtung vi ! ) und z.Bl folgendes eintragen:

SHELL=/bin/zsh
*/3 * * * * /usr/bin/perl /Users/jolly/Binaries/MacUserPresence.perl >/dev/null 2>&1

das wars. Auf dem Mac. Auf der CCU noch die Variable anlegen die das Script benutzt.
Hallo jollyjinx

Erstmal vielen Dank für deine Arbeit.
Vielleicht ist dir nicht bewusst das ich wenig Ahnung von Scripten,cron,Unix und ccu variablen habe.

Hier mal ein Schritt für Schritt was ich bisher getan habe
Ich habe nun die homematic-master.zip von der Github Seite runtergeladen und entpackt.
Ich habe die MacUserPresence.perl Datei in den Ordner User/Mesut/Binaries getan
Ich habe die Datei MacUserPresence.perl mit Textedit geöffnet und in Zeile 25 die IP Adresse meiner CCU eingetragen:
my $ccu2address = "192.178.168.60";
Ich habe Terminal geöffnet
Befehl: env EDITOR=nano crontab -e
Dann
SHELL=/bin/zsh
*/3 * * * * /usr/bin/perl /Users/Mesut/Binaries/MacUserPresence.perl >/dev/null 2>&1
eingetragen
Ctrl +O
Ctrl +X

So nun bin ich auf die CCU und habe ich unter Einstellungen->Systemvariablen eine neue Variable erstellt:
Name: Anwesenheit Macbook; Beschreibung: MacBook wird benutzt; Variablentyp Logikwert; Wertebezeichnung:
wahr = Display is active
falsch = Display not active
Kanalzuordnung ohne


So

wie gehts jetzt weiter?
oder was habe ich bisher falsch gemacht?

nicolas-eric
Beiträge: 3302
Registriert: 07.01.2015, 23:26
Wohnort: Scheeßel
Hat sich bedankt: 21 Mal
Danksagung erhalten: 11 Mal

Re: MacRechnerbenutzung erzeugt Anwesenheitserkennung

Beitrag von nicolas-eric » 17.02.2015, 22:17

Magst Du bitte mal genau beschreiben, was man tun muss, um dieses Script (kann man das bei dem Link runter laden? Hab da keinen DL Button gefunden) auf dem Mac zum Laufen zu bringen? Und wie man das deinstalliert, wenn man es nicht mehr haben möchte?

Wie stelle ich ein, wie oft das laufen soll?
Stellt das beim Ruhezustand automatisch die Systemvariable auf "nicht am Mac"?
Kann man das Script wie es ist einfach auf einem iMac laufen lassen, der ja nur den internen Monitor hat?

Ich würde das Script gerne dafür benutzen, zu erkennen, wenn ich morgens den iMac anwerfe, damit gleich Kaffeemaschine etc. mit angeschaltet werden.
Auch ist es hilfreich zu merken, wenn der iMac in den Ruhezustand gegangen ist, was er nur dann tut, wenn er mit der "Arbeit" fertig ist. Das würde mir das häufige nachschauen ersparen.

Danke schonmal!
Gruss Nico :)

mo111
Beiträge: 26
Registriert: 08.02.2015, 01:33

Re: MacRechnerbenutzung erzeugt Anwesenheitserkennung

Beitrag von mo111 » 17.02.2015, 22:40

nicolas-eric hat geschrieben:Magst Du bitte mal genau beschreiben, was man tun muss, um dieses Script (kann man das bei dem Link runter laden? Hab da keinen DL Button gefunden) auf dem Mac zum Laufen zu bringen? Und wie man das deinstalliert, wenn man es nicht mehr haben möchte?

Wie stelle ich ein, wie oft das laufen soll?
Stellt das beim Ruhezustand automatisch die Systemvariable auf "nicht am Mac"?
Kann man das Script wie es ist einfach auf einem iMac laufen lassen, der ja nur den internen Monitor hat?

Ich würde das Script gerne dafür benutzen, zu erkennen, wenn ich morgens den iMac anwerfe, damit gleich Kaffeemaschine etc. mit angeschaltet werden.
Auch ist es hilfreich zu merken, wenn der iMac in den Ruhezustand gegangen ist, was er nur dann tut, wenn er mit der "Arbeit" fertig ist. Das würde mir das häufige nachschauen ersparen.

Danke schonmal!
Gruss Nico :)
Hallo Nico

Genau das meine ich. Ich glaube jollyjinx geht es sehr leicht von der Hand. Unsereiner braucht da mehr Anleitung. Deshalb habe ich Schritt für Schritt aufgeführt was ich bisher gemacht habe. Hier der Link von der homematic-master.zip: https://github.com/jollyjinx/homematic/ ... master.zip

Hoffentlich hilft uns Jollylinx weiter

nicolas-eric
Beiträge: 3302
Registriert: 07.01.2015, 23:26
Wohnort: Scheeßel
Hat sich bedankt: 21 Mal
Danksagung erhalten: 11 Mal

Re: MacRechnerbenutzung erzeugt Anwesenheitserkennung

Beitrag von nicolas-eric » 17.02.2015, 22:48

Ich habe seinen ersten Post nochmal genau gelesen, das Script ist wohl doch nicht komplett das, was ich benötige.
Wenn der Monitor nicht an ist, wird die Abwesenheit ja schon gesetzt.
So könnte ich zwar beim Einschalten des Macs diverse Aktionen auslösen, aber beim in den Ruhezustand gehen würde wohl nichts passieren, weil der Monitor ja schon vorher schwarz wird.
So könnte ich aber zumindest "bei iMac an = Radio im Büro an" oder ähnliches realisieren.

Habe mir das soweit wir möglich angeschaut und alles eingetragen, bekomme das aber auch nicht zum laufen.

Bevor ich an meinem iMac noch was zerschiesse, warte ich lieber, ob es nicht ein klein wenig Hilfe für mich gibt... :D

Benutzeravatar
jollyjinx
Beiträge: 129
Registriert: 18.03.2014, 14:04
Wohnort: Taufkirchen b. München
Danksagung erhalten: 2 Mal

Re: MacRechnerbenutzung erzeugt Anwesenheitserkennung

Beitrag von jollyjinx » 18.02.2015, 06:14

nicolas-eric hat geschrieben:Ich habe seinen ersten Post nochmal genau gelesen, das Script ist wohl doch nicht komplett das, was ich benötige.
Wenn der Monitor nicht an ist, wird die Abwesenheit ja schon gesetzt.
So könnte ich zwar beim Einschalten des Macs diverse Aktionen auslösen, aber beim in den Ruhezustand gehen würde wohl nichts passieren, weil der Monitor ja schon vorher schwarz wird.
So könnte ich aber zumindest "bei iMac an = Radio im Büro an" oder ähnliches realisieren.

Habe mir das soweit wir möglich angeschaut und alles eingetragen, bekomme das aber auch nicht zum laufen.

Bevor ich an meinem iMac noch was zerschiesse, warte ich lieber, ob es nicht ein klein wenig Hilfe für mich gibt... :D

Also das Script ist vollständig. Man muss im Script, folgende Sachen ändern:

1. die $hmccuvariable auf den Namen den die Variable auf der CCU hat um darzustellen ob der Mac benutzt wird oder nicht.
2. die $ccu2address auf die Adresse, die die CCU hat um vom Mac erreicht zu werden
3. Evtl. die Ethernet Adressen setzen bzw. die EDID vom Bildschirm eintragen. Ethernet Adressen des lokalen Netzwerks findet ihr mit 'arp -an' in der Kommandozeile, EDIDs mit 'ioreg -lw 0 |grep -B 5 -A 15 -i iodisplayedid'
4. Falls ihr 'nen stationären Mac habt einfach $ethernetneighbours und $knowndisplays auf undef setzen.


Danach in der Crontab eintragen dass das Script alle 3 Minuten aufgerufen wird:

SHELL=/bin/zsh
*/3 * * * * /usr/bin/perl /Users/jolly/Binaries/MacUserPresence.perl >/dev/null 2>&1

Danach auf der CCU eine Lokik Variable mit dem gleichen Namen wie im script anlegen und zusätzlich ein Script anlegen, dass den Wert der Variablen bei fehlendem Update auf 'unbenutzt' zurücksetzt, sieht z.B. so aus:
Screen Shot 2015-02-18 at 06.11.51 .png

Damit wird die Variable dann zurückgesetzt, wenn der Mac die Variable für 15 Minuten nicht updatet. Weil der Mac ja nicht sagen kann dass er schläft ;-) 15 Minuten habe ich gewählt, weil der Mac bei Reboots o.ä. sich für ein paar Minuten nicht meldet.

Dass ist schon alles ;-)

Hoffe das klärt die Benutzung etwas - Grüße Patrick
114 Kanaele in 22 Geraeten, 10 Geraetetypen:
2x HM-Sec-WDS-2(Funk-Wassermelder), 1x HM-Sec-SC-2(Funk-Tuer-/ Fensterkontakt), 1x HM-RCV-50(CCU2 System), 2x HM-ES-TX-WM(Funk-Sender fuer Energiezaehler-Sensor), 7x HM-CC-RT-DN(Funk-Heizkoerperthermostat), 1x HM-LC-Sw4-SM(Funk-Schaltaktor 4-fach), 5x HM-Sec-SCo(Funk- Tuer-/Fensterkontakt optisch), 1x HM-ES-PMSw1-Pl(Funk-Schaltaktor mit Leistungsmessung), 1x HM-LC-Sw1-Pl-2(Funk-Schaltaktor 1-fach), 1x HM-LC-Sw1PBU-FM(Funk-Schaltaktor 1-fach fuer Markenschalter)
--------------------------------------------
Inventur mit Jollys InventurScript erzeugt.

Antworten

Zurück zu „HomeMatic Tipps & Tricks - keine Fragen!“