Ich habe einen deCONZ Stick von Dresden Elektronik auf einem RPI als Gateway für Hue, Zigbee,... installiert.
Wie hier beschrieben:
http://coldcorner.de/2018/04/02/deconz-hue-bridge-auf-dem-raspberry-pi-emulieren/ (http://coldcorner.de/2018/04/02/deconz-hue-bridge-auf-dem-raspberry-pi-emulieren/)
Nun bekomme ich nachdem ich meinen Cube über die Phoscon WebApp verbunden habe bei einem
get deCONZ sensors
in FHEM drei Geräte für meinen Cube angezeigt.
Die habe ich testweise mal
eg_ki_cube_1
eg_ki_cube_2
eg_ki_cube_3
genannt.
Wenn ich das Ding bewege bekomme ich Readings, die ich nur bedingt deuten kann.
Hier mal meine Notizen:
eg_ki_cube_1: initialized
eg_ki_cube_2
Schütteln: 4004, 4005
45 drehen: 1003
180 drehen: 3004
doppelklick 2002
eg_ki_cube_3
drehen 90 rechts 6581 5643 8001 6645
Meine Fragen:
1. Bin ich mit meinem Vorhaben über phoscon-->fhem überhaupt auf einem sinnvollen Weg?
2. Wie gehe ich mit den Readings um?
Guten Morgen,
der Cube ist nicht einfach zu interpretieren.
Es gibt vier Aktionen, die ich Auswerten konnten:
1: Kippen von Seite A auf Seite B.
2: Klopfen durch Anheben und Senken.
3: Schieben.
4: Drehung links/rechts. Die Stärke der Drehung (zB 45 Grad) konnte ich nicht zuverlässig ermitteln.
Über DeConz werden Dir zwei Sensoren gemeldet, einer für die Kippen/Klopfen und einer für Drehung.
Diese beiden Sensoren fasse ich in einem Dummy-Device zusammen und lasse diesen Status 0,5 Sekunden im Dummy stehen.
Schlafzimmer_Schalter_Cube_Seite:.*|Schlafzimmer_Schalter_Cube_Drehung:.* {
my $device = "Schlafzimmer_Schalter_Cube";
my $val = ReadingsVal($NAME, "state", 0);
my $currentPosition = substr $val, 0, 1;
my $previousPosition = substr $val, -1;
my $previousPositionOld = ReadingsVal($device, "previousPosition", 0);
my $rotationOld = ReadingsVal($device, "rotation", 0);
my $rotation;
my $command = "none";
if ($NAME eq "Schlafzimmer_Schalter_Cube_Seite" and $val ne "7000")
{
if ($currentPosition ne $previousPosition) { $command = "tilt"; }
if ($currentPosition eq $previousPosition) { $command = "knock"; }
if ($previousPosition eq "0") { $command = "move"; }
if ($command ne "tilt") { $previousPosition = $previousPositionOld; }
fhem("setreading $device currentPosition $currentPosition");
fhem("setreading $device previousPosition $previousPosition");
}
if ($NAME eq "Schlafzimmer_Schalter_Cube_Drehung")
{
$rotation = ReadingsVal($NAME, "state", 0);
if ($val ne $rotationOld and $rotation lt 0) { $command = "rotate_left"; }
if ($val ne $rotationOld and $rotation gt 0) { $command = "rotate_right"; }
if ($val ne $rotationOld) { fhem("setreading $device rotation $val"); }
}
fhem("setreading $device command $command;sleep 0.5;setreading $device command none");
}
Auf dieses Dummy kann man anschließend Notify oder DOIF anwenden.
Gesendet von iPhone mit Tapatalk
Danke für die schnelle Rückmeldung.
Ich bekomme drei Geräte über Phoscon gemeldet.
Ist der Code in einer myUtils oder wo hast Du den stehen?
Ich habe mir das in ein Notify geschrieben.
Aktualisiert das DUMMY Device Schlafzimmer_Schalter_Cube durch die beiden Sensoren Schlafzimmer_Schalter_Cube_Drehung und Schlafzimmer_Schalter_Cube_Seite.
Habe eben nochmal geschaut, bekomme nur zwei Sensoren via DeConz.
Bei Auswertung der Seite bekommt man einen vierstelligen Wert.
Die erste Stelle ist die Seite, die dann oben liegt, die letzte Stelle die Seite die zuvor oben lag. Man muss sich das wie einen aufgeklappten Würfel vorstellen.
Ist aber schon ein paar Wochen her, dass ich das auseinander genommen habe. Hoffe,meine Erinnerung täuscht mich nicht.
Gesendet von iPhone mit Tapatalk
Danke!
Ich bekomme beim Eingeben in der RAW-Definition eine Fehlermeldung (meine Devices heißen nur anders, Dummy ist angelegt):
define notify_eg_ki_cube notify eg_ki_cube_seite:.*|eg_ki_cube_drehung:.* {
my $device = "eg_ki_cube";
my $val = ReadingsVal($NAME, "state", 0);
my $currentPosition = substr $val, 0, 1;
my $previousPosition = substr $val, -1;
my $previousPositionOld = ReadingsVal($device, "previousPosition", 0);
my $rotationOld = ReadingsVal($device, "rotation", 0);
my $rotation;
my $command = "none";
if ($NAME eq "eg_ki_cube_seite" and $val ne "7000")
{
if ($currentPosition ne $previousPosition) { $command = "tilt"; }
if ($currentPosition eq $previousPosition) { $command = "knock"; }
if ($previousPosition eq "0") { $command = "move"; }
if ($command ne "tilt") { $previousPosition = $previousPositionOld; }
fhem("setreading $device currentPosition $currentPosition");
fhem("setreading $device previousPosition $previousPosition");
}
if ($NAME eq "eg_ki_cube_drehung")
{
$rotation = ReadingsVal($NAME, "state", 0);
if ($val ne $rotationOld and $rotation lt 0) { $command = "rotate_left"; }
if ($val ne $rotationOld and $rotation gt 0) { $command = "rotate_right"; }
if ($val ne $rotationOld) { fhem("setreading $device rotation $val"); }
}
fhem("setreading $device command $command;sleep 0.5;setreading $device command none");
}
attr notify_eg_ki_cube room Logik
save
Fehlermeldung:
Missing right curly or square bracket at (eval 374452) line 1, at end of line
syntax error at (eval 374452) line 1, at EOF
Finde den Fehler nicht, scheint irgendwas mit dem Zeilenumbruch in der ersten Zeile zu tun zu haben. Klammer kommt ja erst später...
Hast Du das Notify manuell angelegt und anschließend den Text hineinkopiert?
Würde noch dafür sorgen, dass auf dem Weg zur ersten öffnenden Klammer ,,{" kein Zeilenumbruch kommt.
Gesendet von iPhone mit Tapatalk
Ja manuell.
Habe schon gesucht, finde aber den Fehler leider nicht...
Nach einiger Pfriemelei komme ich zu einem anderem Ergebnis.
Vielleicht habe ich aber auch eine neuere, ältere Version des Zauberwürfels?
Vielleicht hilft es ja jemandem. Viel Erfolg.
MfG
Thomas
defmod Zauberwuerfel1_action HUEDevice sensor 8 IODev=deCONZ
attr Zauberwuerfel1_action IODev deCONZ
attr Zauberwuerfel1_action icon xiaomi_cube
attr Zauberwuerfel1_action room HUEDevice,Wohnen
attr Zauberwuerfel1_action stateFormat Aktion: action\
Seite: side
attr Zauberwuerfel1_action userReadings first \
{my $string = ReadingsVal("Zauberwuerfel1_action","state","");;;;\
my $first = substr($string, 0, 1);;;; \
{return $first}}, \
last \
{my $string = ReadingsVal("Zauberwuerfel1_action","state","");;;;\
my $last = substr($string, 3, 1);;;; \
{return $last}}, \
action \
{my $string = ReadingsVal("Zauberwuerfel1_action","state","");;;;\
my $first = substr($string, 0, 1);;;; \
my $last = substr($string, 3, 1);;;; \
if ($first eq "7") {return 'shake'} \
elsif ($first eq $last) {return 'doubletap'} \
elsif ($last eq "0") {return 'move'} \
elsif ($first gt "0" and $first lt "7") {return 'flip'} \
else {return 'unknown'}}, \
side \
{my $string = ReadingsVal("Zauberwuerfel1_action","state","");;;;\
my $first = substr($string, 0, 1);;;; \
if ($first eq "1") {return 'upper'} \
elsif ($first eq "2") {return 'behind'} \
elsif ($first eq "3") {return 'left'} \
elsif ($first eq "4") {return 'right'} \
elsif ($first eq "5") {return 'front'} \
elsif ($first eq "6") {return 'under'} \
else {return 'unknown'}}, \
last_side \
{my $string = ReadingsVal("Zauberwuerfel1_action","state","");;;; \
my $last = substr($string, 3, 1);;;; \
if ($last eq "1") {return 'upper'} \
elsif ($last eq "2") {return 'behind'} \
elsif ($last eq "3") {return 'left'} \
elsif ($last eq "4") {return 'right'} \
elsif ($last eq "5") {return 'front'} \
elsif ($last eq "6") {return 'under'} \
else {return 'unknown'}}
defmod Zauberwuerfel1_angle HUEDevice sensor 10 IODev=deCONZ
attr Zauberwuerfel1_angle IODev deCONZ
attr Zauberwuerfel1_angle icon xiaomi_cube
attr Zauberwuerfel1_angle room HUEDevice,Wohnen
attr Zauberwuerfel1_angle stateFormat Drehrichtung: rotate
attr Zauberwuerfel1_angle userReadings rotate \
{my $state = ReadingsVal("Zauberwuerfel1_angle","state","");;;; \
if ($state gt 0) {return 'right'} \
elsif ($state lt 0) {return 'left'} \
else {return 'unknown'}}
Verstehe nicht so ganz was daran nicht zu verstehen ist.
1002
Kommt von Seite 2 und kippt auf Seite 1 also 90 Grad
5001
kommt von Seite 1 und kippt auf Seite 5 müsste also glaube 180 Grad sein (mache das gerade aus dem Kopf) Ausnahme sind schütteln 7000 oder so und verschieben x004 oder so.
Im Prinzip ganz einfach.
Da gebe ich dir recht, nur das Verschieben ist x000, aber sonst eigentlich logisch.
Das Kippen um 180° fehlt mir noch in meinem Userreading.
Viel interessanter ist das drehen auf einer Seite. Klappt das bei Dir. So wie im Werbevideo? Bei mir leider nicht.
Ich kann beim Drehen auf derselben Seite nur positive, oder negative Werte unterscheiden, welche sich seltsam verändern?
Also nur die Drehrichtung kann vernünftig bestimmt werden.
Wie kann man sowas zum Dimmen, oder Lautstärke einstellen nutzen?
Keine Ahnung. Bei mir passiert da gar nichts. Was verwendest Du als Gateway?
Mittlerweile bin ich auf den ConBee Stick gewechselt.
Dann muss ich das noch mal testen. Aktuell ärgert mich erstmal deCONZ mit 80% Prozessorlast nach 5 Stunden lauf.
Das Zahlen sollten näherungsweise den Drehwinkel angeben (bezogen auf eine imaginäre 0-Linie. Also: Alter Wert 70, neuer Wert -20 ergibt Drehung nach links um 90 Grad (so zumindest meine Interpretation)
Edit: Hab den Cube noch ein paarmal gedreht... Das ist eher der tatsächliche Winkel... also negative Zahlen Drehung um x Grad nach links, positiv nach rechts.
Zitat von: Papaloewe am 12 Februar 2019, 18:30:44
Nach einiger Pfriemelei komme ich zu einem anderem Ergebnis.
Vielleicht habe ich aber auch eine neuere, ältere Version des Zauberwürfels?
Vielleicht hilft es ja jemandem. Viel Erfolg.
MfG
Thomas
defmod Zauberwuerfel1_action HUEDevice sensor 8 IODev=deCONZ
attr Zauberwuerfel1_action IODev deCONZ
attr Zauberwuerfel1_action icon xiaomi_cube
attr Zauberwuerfel1_action room HUEDevice,Wohnen
attr Zauberwuerfel1_action stateFormat Aktion: action\
Seite: side
attr Zauberwuerfel1_action userReadings first \
{my $string = ReadingsVal("Zauberwuerfel1_action","state","");;;;\
my $first = substr($string, 0, 1);;;; \
{return $first}}, \
last \
{my $string = ReadingsVal("Zauberwuerfel1_action","state","");;;;\
my $last = substr($string, 3, 1);;;; \
{return $last}}, \
action \
{my $string = ReadingsVal("Zauberwuerfel1_action","state","");;;;\
my $first = substr($string, 0, 1);;;; \
my $last = substr($string, 3, 1);;;; \
if ($first eq "7") {return 'shake'} \
elsif ($first eq $last) {return 'doubletap'} \
elsif ($last eq "0") {return 'move'} \
elsif ($first gt "0" and $first lt "7") {return 'flip'} \
else {return 'unknown'}}, \
side \
{my $string = ReadingsVal("Zauberwuerfel1_action","state","");;;;\
my $first = substr($string, 0, 1);;;; \
if ($first eq "1") {return 'upper'} \
elsif ($first eq "2") {return 'behind'} \
elsif ($first eq "3") {return 'left'} \
elsif ($first eq "4") {return 'right'} \
elsif ($first eq "5") {return 'front'} \
elsif ($first eq "6") {return 'under'} \
else {return 'unknown'}}, \
last_side \
{my $string = ReadingsVal("Zauberwuerfel1_action","state","");;;; \
my $last = substr($string, 3, 1);;;; \
if ($last eq "1") {return 'upper'} \
elsif ($last eq "2") {return 'behind'} \
elsif ($last eq "3") {return 'left'} \
elsif ($last eq "4") {return 'right'} \
elsif ($last eq "5") {return 'front'} \
elsif ($last eq "6") {return 'under'} \
else {return 'unknown'}}
defmod Zauberwuerfel1_angle HUEDevice sensor 10 IODev=deCONZ
attr Zauberwuerfel1_angle IODev deCONZ
attr Zauberwuerfel1_angle icon xiaomi_cube
attr Zauberwuerfel1_angle room HUEDevice,Wohnen
attr Zauberwuerfel1_angle stateFormat Drehrichtung: rotate
attr Zauberwuerfel1_angle userReadings rotate \
{my $state = ReadingsVal("Zauberwuerfel1_angle","state","");;;; \
if ($state gt 0) {return 'right'} \
elsif ($state lt 0) {return 'left'} \
else {return 'unknown'}}
Hallo zusammen,
wenn ich das Userreading von Papaloewe verwende bekomm ich folgende Fehler. Vielleicht hat jemand eine Idee was ich falsch mache :(
Internals:
CFGFN
DEF sensor 13 IODev=Raspbee_1
FUUID 5c76dca7-f33f-9f3a-5d0d-7c85dd05b46fdf44
ID S13
INTERVAL
IODev Raspbee_1
NAME Wz.Zauberwuerfel1_action
NR 94617
STATE Aktion: action
Seite: side
TYPE HUEDevice
lastupdated 2019-02-27 21:23:25
lastupdated_local 2019-02-27 22:23:25
manufacturername LUMI
modelid lumi.sensor_cube.aqgl01
name Zauberw�rfel Wohnzimmer
on 1
reachable 1
swversion 20160704
type ZHASwitch
uniqueid 00:15:8d:00:02:9a:90:07-02-0012
Helper:
DBLOG:
state:
DBLogging:
TIME 1551302605.92177
VALUE 5005
READINGS:
2019-02-27 21:48:00 battery 85
2019-02-27 22:23:25 first Error evaluating Wz.Zauberwuerfel1_action userReading first: syntax error at (eval 495006) line 2, near ")
my "
Global symbol "$first" requires explicit package name at (eval 495006) line 2, <GEN1028326> line 1.
Global symbol "$string" requires explicit package name at (eval 495006) line 2, <GEN1028326> line 1.
Global symbol "$first" requires explicit package name at (eval 495006) line 3, <GEN1028326> line 1.
syntax error at (eval 495006) line 3, near "}}"
2019-02-27 21:48:00 reachable true
2019-02-27 22:23:25 state 5005
helper:
devtype S
reachable 0
update_timeout 1
setList:
Attributes:
IODev Raspbee_1
room Wohnzimmer
stateFormat Aktion: action
Seite: side
userReadings first {my $string = ReadingsVal("Wz.Zauberwuerfel1_action","state","")
my $first = substr($string, 0, 1)
{return $first}}
last {my $string = ReadingsVal("Wz.Zauberwuerfel1_action","state","")
my $last = substr($string, 3, 1)
{return $last}}
action {my $string = ReadingsVal("Wz.Zauberwuerfel1_action","state","")
my $first = substr($string, 0, 1)
my $last = substr($string, 3, 1)
if ($first eq "7") {return 'shake'}
elsif ($first eq $last) {return 'doubletap'}
elsif ($last eq "0") {return 'move'}
elsif ($first gt "0" and $first lt "7") {return 'flip'}
else {return 'unknown'}}
side {my $string = ReadingsVal("Wz.Zauberwuerfel1_action","state","")
my $first = substr($string, 0, 1)
if ($first eq "1") {return 'upper'}
elsif ($first eq "2") {return 'behind'}
elsif ($first eq "3") {return 'left'}
elsif ($first eq "4") {return 'right'}
elsif ($first eq "5") {return 'front'}
elsif ($first eq "6") {return 'under'}
else {return 'unknown'}}
last_side {my $string = ReadingsVal("Wz.Zauberwuerfel1_action","state","")
my $last = substr($string, 3, 1)
if ($last eq "1") {return 'upper'}
elsif ($last eq "2") {return 'behind'}
elsif ($last eq "3") {return 'left'}
elsif ($last eq "4") {return 'right'}
elsif ($last eq "5") {return 'front'}
elsif ($last eq "6") {return 'under'}
else {return 'unknown'}}
OK, hab' s jetzt selber gelöst. Habe die Semikolons warum auch immer raus gelöscht gehabt. ::)
Sorry, gerade erst gesehen, aber ich habe das Userreading noch um flip-180 erweitert:
first
{my $string = ReadingsVal($name,"state","");;
my $first = substr($string, 0, 1);;
{return $first}},
last
{my $string = ReadingsVal($name,"state","");;
my $last = substr($string, 3, 1);;
{return $last}},
action
{my $string = ReadingsVal($name,"state","");;
my $first = substr($string, 0, 1);;
my $last = substr($string, 3, 1);;
my $sum = ($first + $last);;
if ($first eq "7") {return 'shake'}
elsif ($first eq $last) {return 'doubletap'}
elsif ($last eq "0") {return 'move'}
elsif ($sum eq "7") {return 'flip-180'}
elsif ($first gt "0" and $first lt "7") {return 'flip-90'}
else {return 'unknown'}},
side
{my $string = ReadingsVal($name,"state","");;
my $first = substr($string, 0, 1);;
if ($first eq "1") {return 'upper'}
elsif ($first eq "2") {return 'behind'}
elsif ($first eq "3") {return 'left'}
elsif ($first eq "4") {return 'right'}
elsif ($first eq "5") {return 'front'}
elsif ($first eq "6") {return 'under'}
else {return 'unknown'}},
last_side
{my $string = ReadingsVal($name,"state","");;
my $last = substr($string, 3, 1);;
if ($last eq "1") {return 'upper'}
elsif ($last eq "2") {return 'behind'}
elsif ($last eq "3") {return 'left'}
elsif ($last eq "4") {return 'right'}
elsif ($last eq "5") {return 'front'}
elsif ($last eq "6") {return 'under'}
else {return 'unknown'}}
@Papaloewe, läuft super Danke!!!! :)
Servus miteinander,
ich hab das drehdings nochmal aufgebohrt:
rotate
{my $state = ReadingsVal("AQ_Cube","state","");;
if ($state > 9000) {return 'right90'}
elsif ($state > 4500) {return 'right45'}
elsif ($state > 0) {return 'right'}
elsif ($state < -9000) {return 'left90'}
elsif ($state < -4500) {return 'left45'}
elsif ($state < 0) {return 'left'}
else {return 'unknown'}}
Per DOIF rumpel ich dann auf den AV-Receiver raus: (Ist nicht besonders elegant, funktioniert aber :-D )
defmod WZ_DI_CubeDrehen DOIF ([AQ_Cube:rotate] eq "right" \
and [?OnkyoAVR:power] eq "on")\
(set OnkyoAVR VolumeUp)\
DOELSEIF\
([AQ_Cube:rotate] eq "right45" \
and [?OnkyoAVR:power] eq "on")\
(set OnkyoAVR VolumeUp)(set OnkyoAVR VolumeUp)\
DOELSEIF\
([AQ_Cube:rotate] eq "left" \
and [?OnkyoAVR:power] eq "on") \
(set OnkyoAVR VolumeDown)\
DOELSEIF\
([AQ_Cube:rotate] eq "left45" \
and [?OnkyoAVR:power] eq "on") \
(set OnkyoAVR VolumeDown)(set OnkyoAVR VolumeDown)\
DOELSE
attr WZ_DI_CubeDrehen do always
attr WZ_DI_CubeDrehen room Automatisierung,Wohnzimmer
attr WZ_DI_CubeDrehen wait 0:0,0.5:0:0,0.5
Gruß, mimo
Hallo zusammen,
erst mal vielen danke für die Bereitstellung der Userreadings, das hat mir bei der Auswertung viel Zeit erspart.
Da der Würfel aber auch die Readings "temperature" und "battery" bereitstellt, würde eine Temperatur/Batterie Änderung auch ein triggern der userreadings bewirken und so ungewollt Aktionen ausführen.
Desshalb habe ich für die userreadings noch den Trigger Parameter gesetzt.
action:^\d{4}$ bzw. rotate:^-?\d+$
Anbei meine angepassten Attribute inkl. der letzten Modifikationen von Papaloewe & mimo84:
attr Zauberwuerfel1_action userReadings
first:^\d{4}$
{my $string = ReadingsVal($name,"state","");;
my $first = substr($string, 0, 1);;
{return $first}},
last:^\d{4}$
{my $string = ReadingsVal($name,"state","");;
my $last = substr($string, 3, 1);;
{return $last}},
action:^\d+$
{my $string = ReadingsVal($name,"state","");;
my $first = substr($string, 0, 1);;
my $last = substr($string, 3, 1);;
my $sum = ($first + $last);;
if ($first eq "7") {return 'shake'}
elsif ($first eq $last) {return 'doubletap'}
elsif ($last eq "0") {return 'move'}
elsif ($sum eq "7") {return 'flip-180'}
elsif ($first gt "0" and $first lt "7") {return 'flip-90'}
else {return 'unknown'}},
side:^\d{4}$
{my $string = ReadingsVal($name,"state","");;
my $first = substr($string, 0, 1);;
if ($first eq "1") {return 'upper'}
elsif ($first eq "2") {return 'behind'}
elsif ($first eq "3") {return 'left'}
elsif ($first eq "4") {return 'right'}
elsif ($first eq "5") {return 'front'}
elsif ($first eq "6") {return 'under'}
else {return 'unknown'}},
last_side:^\d{4}$
{my $string = ReadingsVal($name,"state","");;
my $last = substr($string, 3, 1);;
if ($last eq "1") {return 'upper'}
elsif ($last eq "2") {return 'behind'}
elsif ($last eq "3") {return 'left'}
elsif ($last eq "4") {return 'right'}
elsif ($last eq "5") {return 'front'}
elsif ($last eq "6") {return 'under'}
else {return 'unknown'}}
attr Zauberwuerfel1_angle userReadings
rotate:^-?\d+$ {my $state = ReadingsVal($name,"state","");;
if ($state > 9000) {return 'right90'}
elsif ($state > 4500) {return 'right45'}
elsif ($state > 0) {return 'right'}
elsif ($state < -9000) {return 'left90'}
elsif ($state < -4500) {return 'left45'}
elsif ($state < 0) {return 'left'}
else {return 'unknown'}}
Gruß Schlimbo
Hallo,
Das mit den User readings hat bei mit geklappt, danke dafür!
Ich habe noch das Problem das mein cube die rotate Bewegung nicht erkennt (also drehen ohne zu flippen)...
Das ist jetzt mal unabhängig vom User reading...
Hatte zuvor den cube mit zigbee2mqtt betrieben und da gieng das noch...
Ist das ein bekanntes Problem?
Gruß!
EDIT:
Problem gefunden! Deconz legt 2 seperat devices bei mir an...
Vielen Dank für das Code Beispiel. Hätte ich Wochen gebraucht.
Läuft wunderbar. Hatte bisher den Cube via "zigbee2MQTT" angebunden.
Deconz finde ich aber besser.
Vg Denny
Zitat von: Papaloewe am 12 Februar 2019, 18:30:44
Nach einiger Pfriemelei komme ich zu einem anderem Ergebnis.
Vielleicht habe ich aber auch eine neuere, ältere Version des Zauberwürfels?
Vielleicht hilft es ja jemandem. Viel Erfolg.
MfG
Thomas
defmod Zauberwuerfel1_action HUEDevice sensor 8 IODev=deCONZ
attr Zauberwuerfel1_action IODev deCONZ
attr Zauberwuerfel1_action icon xiaomi_cube
attr Zauberwuerfel1_action room HUEDevice,Wohnen
attr Zauberwuerfel1_action stateFormat Aktion: action\
Seite: side
attr Zauberwuerfel1_action userReadings first \
{my $string = ReadingsVal("Zauberwuerfel1_action","state","");;;;\
my $first = substr($string, 0, 1);;;; \
{return $first}}, \
last \
{my $string = ReadingsVal("Zauberwuerfel1_action","state","");;;;\
my $last = substr($string, 3, 1);;;; \
{return $last}}, \
action \
{my $string = ReadingsVal("Zauberwuerfel1_action","state","");;;;\
my $first = substr($string, 0, 1);;;; \
my $last = substr($string, 3, 1);;;; \
if ($first eq "7") {return 'shake'} \
elsif ($first eq $last) {return 'doubletap'} \
elsif ($last eq "0") {return 'move'} \
elsif ($first gt "0" and $first lt "7") {return 'flip'} \
else {return 'unknown'}}, \
side \
{my $string = ReadingsVal("Zauberwuerfel1_action","state","");;;;\
my $first = substr($string, 0, 1);;;; \
if ($first eq "1") {return 'upper'} \
elsif ($first eq "2") {return 'behind'} \
elsif ($first eq "3") {return 'left'} \
elsif ($first eq "4") {return 'right'} \
elsif ($first eq "5") {return 'front'} \
elsif ($first eq "6") {return 'under'} \
else {return 'unknown'}}, \
last_side \
{my $string = ReadingsVal("Zauberwuerfel1_action","state","");;;; \
my $last = substr($string, 3, 1);;;; \
if ($last eq "1") {return 'upper'} \
elsif ($last eq "2") {return 'behind'} \
elsif ($last eq "3") {return 'left'} \
elsif ($last eq "4") {return 'right'} \
elsif ($last eq "5") {return 'front'} \
elsif ($last eq "6") {return 'under'} \
else {return 'unknown'}}
defmod Zauberwuerfel1_angle HUEDevice sensor 10 IODev=deCONZ
attr Zauberwuerfel1_angle IODev deCONZ
attr Zauberwuerfel1_angle icon xiaomi_cube
attr Zauberwuerfel1_angle room HUEDevice,Wohnen
attr Zauberwuerfel1_angle stateFormat Drehrichtung: rotate
attr Zauberwuerfel1_angle userReadings rotate \
{my $state = ReadingsVal("Zauberwuerfel1_angle","state","");;;; \
if ($state gt 0) {return 'right'} \
elsif ($state lt 0) {return 'left'} \
else {return 'unknown'}}