Hauptmenü

Aktorname zusammensetzten

Begonnen von djhans, 30 Januar 2014, 13:53:35

Vorheriges Thema - Nächstes Thema

djhans

Hallo,
ich möchte ein Device mittels Google Kalender schalten. Der DeviceName setzt sich aus "Device-Art" und "Lokation" zusammen, da die Devices in mehreren Räumen vorkommen. Das Device heißt "Lampe" und die Lokation z.B. "Schlafzimmer" Der Device Name somit "Lampe_Schlafzimmer"

Der Kalendereintrag heißt nun "Lampe" und als Ort ist "Schlafzimmer" angegeben. ICh kann dies nun so in fhem auslesen:

define LampeOn notify HomeControl:modeStarted.* { my $reading="%EVTPART0";; my $uid= "%EVTPART1";; my $device= fhem("get HomeControl summary $uid");;
my $location= fhem("get HomeControl location $uid");; if(defined $device) { fhem("set $device on") } }


Mein Problem ist der letzte Teil der Anweisung "if (defined $ device...") Wie setze ich aus $device und $location meinen Aktonamen zusammen? Wie "addiere ich die beiden Variablen inklusive "Unterstrich" zu einem Devicenamen? Komme damit nicht weiter...

Danke,
djhans.

betateilchen

streiche:

if(defined $device) { fhem("set $device on") }

setze:

if(defined $device) { my $d="$device_$location"; fhem("set $d on") }

(und achte darauf, dass danach nochmal eine geschweifte Klammer zu kommt!)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

djhans

Hi,
uups! So einfach ist das!

Besten Dank,
Christian.

djhans

#3
Moin,
ich habe das ein wenig umgeschrieben, aber irgendwo ist ein Fehler drin:
define LightOn notify HomeControl:modeStarted.* { my $reading="%EVTPART0";; my $uid= "%EVTPART1";;
my $device= fhem("get HomeControl summary $uid");;
my $location= fhem("get HomeControl location $uid");; my $d="$device_$location";; if(defined $d) { fhem("set $d on") } }



...finde ihn aber nicht. Der Alarm wird ausgelöst, aber das Gerät schaltet nicht. Der DeviceName scheint nicht zu existieren. Den gibt es aber und er heisst halt Licht_Schlafzimmer, wobei Licht in summary und Schlafzimmer in Ort des Kalenders steht. Der zusammengesetzte Name Klappt nicht. Wenn ich den kompletten Device Namen in summary schreibe und die Sache mit der Variable d weglasse (also direkt device verwende, siehe oben) funzt es.
djhans

Puschel74

Hallo,

versuch mal das:

my $d="$device"."_"."$location"

Grüsse
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

betateilchen

#5
Zitat von: djhans am 30 Januar 2014, 15:54:06ich habe das ein wenig umgeschrieben,

Ja, aber verstanden, was Du da tust, hast Du nicht. Das if muss immer auf $device prüfen, nicht auf $d.

teste mal diese Variante:

Damit solltest Du im Logfile einen Hinweis finden, welcher Gerätename zum Schalten verwendet wird.


Code entfernt, man sollte einfach sowas nicht von unterwegs tippen, solche Screen-Tastaturen sind einfach Mist.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

djhans

..ja das stimmt, verstehe es noch nicht, habe es aber mal 1:1 eingebaut.
2014.01.30 16:33:00 3: LightOn return value: syntax error at (eval 257) line 1, near "DEBUG " D:$d""

hier noch mal der Teil aud dem DEF-Bereich von LightOn:
HomeControl:modeStarted.* { my $reading="%EVTPART0"; my $uid= "%EVTPART1";
my $device= fhem("get HomeControl summary $uid");
my $location= fhem("get HomeControl location $uid"); if(defined $device) { my $d='$device'.'_'.'$location'; DEBUG " D:$d"; fhem("set $d on ") } }


djhans

betateilchen

sorry, mein Fehler. Lass das mit dem Debug einfach weg.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

so, jetzt nochmal in aller Ruhe und mit einer "richtigen" Tastatur getippt...

if(defined $device) { my $d=$device.'_'.$location; fhem("set $d on") }

Die debug-Meldung brauchst Du nicht, eigentlich solltest Du im Log eine Fehlermeldung finden, in welcher der Devicename auch drinsteht.

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

djhans

Hallo,
Besten Dank, es funzt! Jetzt muss ich nur mal gucken, ob ich noch Parameter in den Google Kalender packe. Dazu eignet sich das Beschreibungsfeld. Da könnte man die Helligkeit der Lampe oder für das Sonos-System die Playliste hinterlegen, die abgespielt werden soll. Ob dies alles Sinn macht, weiss ich noch nicht!
Gruß,
Christian

Puschel74

Hallo,

ZitatOb dies alles Sinn macht, weiss ich noch nicht!
Klar macht es das - dafür ist ein Automatisierungssystem gedacht.
DU musst nur die empfagenen Daten entsprechend verwerten.

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

djhans

Hi,
ja, das schon! Ich frage mich nur, ob es Sinn macht, alles über den google Kalender zu steuern, oder seine  Daten besser im lokalen Netz lässt. Sollte eigentlich reichen, die lokalen Kalender von fhem zu nutzen....Weiß ich halt noch nicht! Ist aber toll, dass es funzt....

Christian




Puschel74

Hallo,

ob du deine Ferien/Familienfeiern/Urlaub was auch immer in der Cloud speicherst oder zuhause musst du entscheiden.
Ich nutze die holiday-Dateien von FHEM - so weiss Google/... schonmal nicht wann ich frei habe und wann ich arbeiten gehe  8)

Grüsse
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Rince

@djhans
Logisch macht das Sinn

Was du jetzt mit Betateilchens und Puschels Hilfe gebastelt hast, ist eine äußerst einfach zu bedienende Anwesenheitssimulation ;)
Das ist nämlich genial.

Solltest du unter Codeschnipsel einfach posten und ins Wiki stellen :)
Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

Puschel74

Hallo,

Zitatund Puschels Hilfe gebastelt hast,
Nene - betateilchen hat den Code gepostet, nicht ich.

Grüsse
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.