(Gelöst) Benötige Hilfe beim PRESENCE

Begonnen von misux, 29 März 2018, 12:03:43

Vorheriges Thema - Nächstes Thema

Diamond_72

Hallo Otto,

danke für deine Hilfe. Ich denke ich habe es nun richtig verstanden. Ich habe folgendes mal ausprobiert:

define SATReceiverVUsOFF at *09:00 {SATReceiverVUsCheck ()}

und in die 99_myUtils.pm folgendes eingetragen:

## PRESENCE SAT
sub SATReceiverVUsCheck ()

{
if (Value("Mann_State") eq "absent" and Value("Frau_State") eq "absent" ) {
fhem ("set SATReceiverSolo2SE off" and "set SATReceiverSolo2 off")
}
}


Das scheint aber technisch irgendwie noch nicht zu funktionieren. Der Presentstatus beider Geräte läuft aber ohne Probleme. Die Aktualisierung dauert keine 5 Minuten!

Eigentlich sollte es doch reichen, wenn ich nur diese Zeile in der 99_myUtils.pm reinschreibe:
if (Value("Mann_State") eq "absent" and Value("Frau_State") eq "absent" ) {
fhem ("set SATReceiverSolo2SE off" and "set SATReceiverSolo2 off")
}


auch das funktioniert leider nicht. Die Receiver bleiben an.
Pi2 + HM-MOD-RPI-PCB, 6x HM-TC-IT-WM-W-EU, 2x HM-LC-SW4-DR

Otto123

#31
Moin,

und hast Du Fehler im Log?
Was macht das denn in der FHEM Kommandozeile: ???
{fhem ("set SATReceiverSolo2SE off" and "set SATReceiverSolo2 off")}
and ist an der Stelle nicht möglich und auch nicht nötig. and wäre die logische Verknüpfung von zwei Werten zu einem! Keine Verbindung von: Dieser Befehl und Dieser Befehl.

Zitat von hier https://commandref.fhem.de/#command
ZitatMultiple FHEM commands are separated by semicolon (; ). In order to use semicolon in perl code or shell programs, they have to be escaped by the double semicolon (;; )
Für den Test in der FHEM Kommandozeile
{fhem ("set SATReceiverSolo2SE off;;set SATReceiverSolo2 off")}
Für die Sub
fhem ("set SATReceiverSolo2SE off;set SATReceiverSolo2 off")

Edit. Diese Bemerkung verstehe ich gar nicht:
ZitatEigentlich sollte es doch reichen, wenn ich nur diese Zeile in der 99_myUtils.pm reinschreibe:
Du hast schon die 99_myUtils.pm strukturiert mit dem Template angelegt?

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Diamond_72

#32
Zitat von: Otto123 am 29 März 2019, 10:45:30
Diese Bemerkung verstehe ich gar nicht:Du hast schon die 99_myUtils.pm strukturiert mit dem Template angelegt?

Moin nochmal,

Damit wollte ich sagen, reicht es nicht aus diese Zeile in die 99_myUtils.pm zu schreiben, ohne ein define at anlegen zu müssen?
FHEM sollte diese Zeile ja dann immer als Ereignis ausführen oder verstehe ich da wieder etwas falsch?

if (Value("Mann_State") eq "absent" and Value("Frau_State") eq "absent" ) {
fhem ("set SATReceiverSolo2SE off;set SATReceiverSolo2 off")
}


Danke für den Tipp mit den Semikolons.
Pi2 + HM-MOD-RPI-PCB, 6x HM-TC-IT-WM-W-EU, 2x HM-LC-SW4-DR

Otto123

Ich wiederhole mal meine Frage: Du hast schon die 99_myUtils.pm strukturiert mit dem Template angelegt?
Etwas zum lesen: https://wiki.fhem.de/wiki/99_myUtils_anlegen

die 99_myUtils wird beim Start von FHEM geladen. Es ist nicht der Zweck dieser Datei irgendetwas "immer" auszuführen.
Überhaupt führt FHEM nicht von sich aus etwas "immer" aus. FHEM reagiert auf Ereignisse die Du definierst.
Ein at reagiert auf ein Zeitereigniss
Du kannst auf Änderung des Status von Mann_State reagieren (notify)
usw.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Diamond_72

#34
Achso, jetzt weiß ich was du mit Template meinst. Ja klar. Ich habe die 99_myUtils.pm bereits so angelegt gehabt:

package main;
use strict;
use warnings;
use POSIX;
sub
myUtils_Initialize($$)
{
   my ($hash) = @_;
}
1;


Mhh ok,dass habe ich mir gedachte, dass FHEM das nicht automatisch ausführt. Dann ist das ja auch geklärt.
Also kann ich das Sub mittels at, notify usw. zum ausführen bringen. Dann ist ja alles in Ordnung:

mein angelegtes define at:
COMMAND {SATReceiverVUsCheck ()}
DEF +*00:01:00 {SATReceiverVUsCheck ()}


und mein Sub

sub SATReceiverVUsCheck ()

{
if (Value("Mann_State") eq "absent" and Value("Frau_State") eq "absent") {
fhem ("set SATReceiverSolo2SE off;set SATReceiverSolo2 off")
}
}


Ich werde mir das Grundlagendokument zur Herzen nehmen. Vielleicht habt Ihr ja noch weitere Dokumente die bei der Grundprogrammierung in FHEM hilfreich sind.
Pi2 + HM-MOD-RPI-PCB, 6x HM-TC-IT-WM-W-EU, 2x HM-LC-SW4-DR

Otto123

Naja eigentlich hier als Einstieg
https://wiki.fhem.de/wiki/Hauptseite
Und für Perl
https://perldoc.perl.org/index.html

Aber ehrlich: Ich würde diesen Zweizeiler direkt in das at schreiben. Aber musst Du wissen. ;)
99_myUtils ist die Ablage für längeren Code und vor allem auch Dinge die an mehreren Stellen verwendet werden.  Aber das kann man selbst halten wie man will.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Diamond_72

Ja, ich kann dich verstehen. Ich habe es jetzt einfach so probiert, damit ich das Prinzip verstehe.
Ich werde es nachher Produktiv mal ausprobieren.
Ich muss mal noch überlegen, welche Ereignissteuerungen noch Sinn machen bei den Receivern. Diese Lösung war mir in erster Linie wichtig, da meine kleinen Kinder den Receiver gerne mal an lassen :)
Pi2 + HM-MOD-RPI-PCB, 6x HM-TC-IT-WM-W-EU, 2x HM-LC-SW4-DR

Otto123

Ich habe das so gemacht:define di_Satbox DOIF (([TV] eq "off") and ([VUPLUS1:recordings] == 0)) (set VUPLUS1 shutdown)

Der off Event vom TV schaltet den Receiver aus, falls der nicht gerade aufnimmt.

Das off was Du verwendest schaltet bei mir die Receiver nicht wirklich aus sondern macht nur standby. Da ist der Stromverbrauch nur minimal niedriger als im On Zustand. Erst im deep Standby ist wirklich so gut wie aus.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Diamond_72

#38
Hi nochmal,

ja ich hatte auch erst den Gedanken gehabt, das ganze irgendwie mit dem TV Status zu lösen, jedoch denke ich, dass ich den Status mit meinem Samsung TV nicht auslesen kann?!

Vielleicht gibt es ja speziell für die Samys mit SmartTV (hat meiner) ja ein Modul.

Am Rande noch eine Frage Otto: Kannst du deine VU auch aus dem Deep off per fhem o. ä. wieder einschalten? Meines erachtens sollte die doch nur im Standby möglich sein.

Sehe gerade, es gibt ja das Modul STV. Denke aber, dass mein UE40J6250 damit laut commandref nicht funktionieren wird!
Pi2 + HM-MOD-RPI-PCB, 6x HM-TC-IT-WM-W-EU, 2x HM-LC-SW4-DR

Otto123

Hi,

naja den Status des TV kannst Du eventuell auch noch mit einem PRESENCE (lan-ping) oder WOL Devices ermitteln.

Mein VU kann kein WOL (es soll wohl welche geben) und damit kann ich ihn aus dem deep Standby nur mit Fernbedienung wecken. Ist für mich aber ok. Aufnehmen kann er ja allein und wenn ich schauen will kann ich die Minute warten bis er an ist.
Der normale standby ist für mich etwas witzlos, weil er dann praktisch auch an bleiben könnte.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Diamond_72

Zitat von: Otto123 am 01 April 2019, 15:50:28
Der normale standby ist für mich etwas witzlos, weil er dann praktisch auch an bleiben könnte.

Dachte, dass es dazu mittlerweile einen Standard gibt, den jeder Hersteller auf jedenfall einhalten muss, sodass der Strom eigentlich relativ gering sein sollte.

Das mit dem Ping werde ich versuchen. Hoffe bekomme es hin...
Pi2 + HM-MOD-RPI-PCB, 6x HM-TC-IT-WM-W-EU, 2x HM-LC-SW4-DR

Otto123

Naja dass mit dem Standby ist bei den enigma Boxen generell so. Standby bedeutet da praktisch nur Bild aus. Deep Standby ist dann < 1 Watt. Damit ist sicher die Forderung erfüllt. Und die Definition/Beschreibung irreführend.

Der Standard ist bei allen Images, dass sie nur standby machen. herunterfahren nur auf Anforderung.  ;)
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

misux

#42
HI, ist zwar etwas spät....

Aber warum machst du nicht ein einfaches DOIF?

Quasi so: DOIF Wenn Presence absent dann sezte um 00Uhr mein Reciever auf off

oder besser:

([?Haus] eq "absent" and [00:00]) (set Satreciever off)

Wäre das nicht der einfachste Weg? Ich nutze meine Precence Steuerung schon lange mit DOIF und das Tadellos!

Ich Schalte meinen Mediaplayer in der Art Aus und wieder ein....:

Wenn ich meinen TV ausschalte, lässt ein DOIF meinen Mediaplayer herunterfahren und 5 Minuten später wird er vom Netz getrennt. Schalte ich den TV wieder ein, wird der Player wieder mit Strom versorgt und bootet.

siehe hier: https://forum.fhem.de/index.php/topic,92694.msg857064.html#msg857064

So könntest du ja bei dir den TV durch deine Absent/Present Geräte ersetzen...