[gelösst]Befehlskette mit if und else um Dummy mit 10 cmds zu steuern

Begonnen von Larusso, 31 Dezember 2017, 13:57:27

Vorheriges Thema - Nächstes Thema

Larusso

Hallo zusammen,

ich habe mir für meine Domkamera im Garten einen Dummy mit webcmd 1 bis 10 angelegt um darüber die Positionen anzufahren. Iergendwie bekomme ich die Befehlskette nicht aufgebaut. Ich habe in der definition des notify folgendes versucht:

if Kamera_Position:1 set Cam1 pos 1,
elseif if Kamera_Position:2 set Cam1 pos 2,
elseif if Kamera_Position:3 set Cam1 pos 3,


ich hab da iergend einen bock drin und bin ein blutiger Anfänger in Sachen pearl.

Wenn ich die Befehle so absetze geht es ohne Probleme

set Cam1 pos 1 und die Kamera fährt auf die Position 1

Könnte mir bitte jemand mit der if elseif Problematik helfen.
nanoCul434MHz, nanoCul868MHz, HueBridge, shellyRolladenaktoren, Nuki, Homematic, RPI3, Homebridge, Sonoffbridge, Xiaomi Saugrobotter,

igami

Warum nicht einfach das webCmd von der Kamera verwenden?
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

Larusso

Mit dem Tabletui kann ich noch gar nichts anfangen. Kann ich das webcmd denn in den Floorplan einbinden und wenn wie?
nanoCul434MHz, nanoCul868MHz, HueBridge, shellyRolladenaktoren, Nuki, Homematic, RPI3, Homebridge, Sonoffbridge, Xiaomi Saugrobotter,

igami

Das sind doch jetzt vollkommen neue Fragen.
Was hast du konkret vor? Du willst im Frontend (TabletUI und/oder Floorplan) einen Schalter für die einzelnen Positionen haben?
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

Larusso

#4
Ich wollte mit dem dummy und dem entsprechenden notify schalter (die cmd comandos) im Floorplan als quasi Button anlegen damit ich die Positionen der Kamera anfahren kann, im Moment habe ich auf meinem Floorplan die Kamera als webinterface laufen und will diese dann steuern. Das webcmd der Kamera habe ich jetzt mit den Befehlen gefüttert und kann nun auch die Positionen anfahren, allerdings gefällt mir der Name der einzelnen Befehle nicht dort steht nun im Floorplan halt pos 1, pos 2 usw.

Wenn ich unten im Bild nun 10 Positionen unter dem Icon der Kamera habe wird das sehr unübersichtlich. das Icon der Kamera ist im Floorplan an der Stelle des Hauses wo sich die Kamera befindet.
nanoCul434MHz, nanoCul868MHz, HueBridge, shellyRolladenaktoren, Nuki, Homematic, RPI3, Homebridge, Sonoffbridge, Xiaomi Saugrobotter,

CoolTux

Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Larusso

Da steht im Moment noch nicht viel drin, da die ersten Positionen schon nicht angefahren werden, der Code steht oben. Hier aber nochmal der Auszug aus der fhem config:

define Kamera_Position dummy
attr Kamera_Position webCmd 1:2:3:4:5:6:7:8:9:10
define Kamera_Position_notify notify if Kamera_Position:1 set Cam1 pos 1,\
elseif if Kamera_Position:2 set Cam1 pos 2,\
elseif if Kamera_Position:3 set Cam1 pos 3,
nanoCul434MHz, nanoCul868MHz, HueBridge, shellyRolladenaktoren, Nuki, Homematic, RPI3, Homebridge, Sonoffbridge, Xiaomi Saugrobotter,

CoolTux

Das ist kein list vom Device
So kann das auch nicht gehen. Schaue dir bitte die Beispiele in der Commandref und im Wiki an.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

KernSani

Hi Larusso,


ich glaube du solltest dich erstmal mit den Grundlagen von notify vertraut machen (Einsteiger-PDF, Wiki).

Als Einstieg:

define Kamera_Position_notify notify Kamera_Position:.* {if ...}


Grüße,

Oli
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

Larusso

#9
Ich hab da so meine Probleme mit den Klammern das bekomme ich einfach nicht sauber glöst, mein Ansatz wäre dieser aber dort gibt es immer noch Fehler:

if(Kamera_Position:1)
{set Cam1 pos 1};;
elsif(Kamera_Position:2)
{set Cam1 pos 2};;
elsif(Kamera_Position:3)
{set Cam1 pos 3};;
elseif(Kamera_Position:4)
{set Cam1 pos 4};;
elsif(Kamera_Position:5)
{set Cam1 pos 5};;
elsif(Kamera_Position:6)
{set Cam1 pos 6};;
elsif(Kamera_Position:7)
{set Cam1 pos 7};;
elsif(Kamera_Position:8)
{set Cam1 pos 8};;
else(Kamera_Position:9)
{set Cam1 pos 9};;


dann könnte ich das für mich wie in dem Bild unten so lösen und wäre mit der Optik sehr zufrieden.
nanoCul434MHz, nanoCul868MHz, HueBridge, shellyRolladenaktoren, Nuki, Homematic, RPI3, Homebridge, Sonoffbridge, Xiaomi Saugrobotter,

CoolTux

Noch mal. Bitte mach ein
list NOTIFYNAME

und poste die Ausgabe hier
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

KernSani

Wie oben schon gesagt - da scheint es an Grundlagen zu fehlen... nicht nur bei der Klammerung

if(Kamera_Position:1)

ist (sorry für die Ausdrucksweise) kurz gesagt Unfug, was du wahrscheinlich willst, ist sowas:

if ReadingsVal("Kamera_Position","state","") eq "1" ... oder einfacher
if [Kamera_Position:state] eq "1"

Um das zu beurteilen, wäre aber mal ein

list Kamera_Position

und ein

list Kamera_Position_notify

sinnvoll, nicht nur aus dem Zusammenhang gerissene Codeschnipsel...

Grüße,

Oli
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

Larusso

jetzt hab ichs verstanden,

Internals:
   CFGFN     
   DEF        if Kamera_Position:1 set Cam1 pos 1,
elseif if Kamera_Position:2 set Cam1 pos 2,
elseif if Kamera_Position:3 set Cam1 pos 3,
   NAME       Kamera_Position_notify
   NR         7964
   NTFY_ORDER 50-03
   REGEXP     {if(Kamera_Position:1)
   STATE      active
   TYPE       notify
   READINGS:
     2017-12-31 13:54:41   state           active
Attributes:



Internals:
   CFGFN     
   NAME       Kamera_Position
   NR         7866
   STATE      1
   TYPE       dummy
   READINGS:
     2017-12-31 14:55:37   state           1
Attributes:
   devStateIcon .*:edit_settings
   fp_Erdgeschoss 171,975,5,Kamera_Position,
   webCmd     1:2:3:4:5:6:7:8:9:10



Internals:
   AUTHORITY  192.168.178.50:80
   DEF        192.168.178.50:80
   NAME       Cam1
   NR         46
   SEQ        0
   STATE      Defined
   TYPE       IPCAM
   READINGS:
     2017-12-25 12:27:20   last            Cam1_snapshot.jpg
     2017-12-07 16:52:25   snapshot01      Cam1_snapshot_01.jpg
     2017-12-07 16:52:30   snapshot02      Cam1_snapshot_02.jpg
     2017-12-07 16:52:35   snapshot03      Cam1_snapshot_03.jpg
     2017-12-07 16:52:40   snapshot04      Cam1_snapshot_04.jpg
     2017-12-07 16:52:45   snapshot05      Cam1_snapshot_05.jpg
     2017-12-25 12:27:00   snapshot1       Cam1_snapshot_1.jpg
     2017-12-25 12:27:05   snapshot2       Cam1_snapshot_2.jpg
     2017-12-25 12:27:10   snapshot3       Cam1_snapshot_3.jpg
     2017-12-25 12:27:15   snapshot4       Cam1_snapshot_4.jpg
     2017-12-25 12:27:20   snapshot5       Cam1_snapshot_5.jpg
     2017-12-25 12:27:20   snapshots       5
Attributes:
   basicauth  admin:larusso1
   cmdPanLeft command=4
   cmdPanRight command=6
   cmdPos01   command=31
   cmdPos02   command=33
   cmdPos03   command=34
   cmdPos04   command=35
   cmdPos05   command=36
   cmdPos06   command=37
   cmdPos07   command=38
   cmdPos08   command=39
   cmdPosHome command=25
   cmdStep    onstep
   cmdTiltDown command=2
   cmdTiltUp  command=0
   delay      5
   devStateIcon .*:it_camera
   event-on-update-reading snapshots
   fp_Erdgeschoss 18,203,7,Cam1,
   path       snapshot.cgi?
   pathPanTilt decoder_control.cgi?
   room       Kamera
   snapshots  5
   storage    /media/pi/STICK
   webCmd     pos 1:pos 2:pos 3:pos 4:pos 5:pos 6:pos 7:pos 8


nanoCul434MHz, nanoCul868MHz, HueBridge, shellyRolladenaktoren, Nuki, Homematic, RPI3, Homebridge, Sonoffbridge, Xiaomi Saugrobotter,

CoolTux


DEF        if Kamera_Position:1 set Cam1 pos 1,

Leider ist diese Notify Definition totaler Mumpitz. Bitte lese dir Commandref zu Notify. So wird das nie was. Wo soll da die trigger RegEx sein?
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Larusso

Aber genau die def führt das aus was ich brauche. In meinem Dummy habe ich die webcmd 1 bis 10 stehen. Wenn ich nun am dummy die 1 drücke soll er über das notify  Cam pos 1 auslösen, damit das IPCAM modul die Kamera an die gespeicherte Position fährt. Gebe ich die Befehle also:

if Kamera_Position:1 set Cam1 pos 1 und drücke dann am Dummy auf 1 fährt die Kamera über das notify die gewünschte Position an. Mehr soll das notify nicht tun, das was ich nicht hin bekomme in der def ist alle 10 webcmd so in eine def einzubinden das alle funktionieren.

attr Kamera_Position webCmd 1:2:3:4:5:6:7:8:9:10 deshalb ja die ziffern 1 bis 10 um jeder ziffer eine andere gespeicherte Position anzufahren. Wenn ich das ganze mit nur zwei webcmd mache kann ich das ganze ohne elsif lösen aber ich habe nun mal mehr als zwei Positionen.
nanoCul434MHz, nanoCul868MHz, HueBridge, shellyRolladenaktoren, Nuki, Homematic, RPI3, Homebridge, Sonoffbridge, Xiaomi Saugrobotter,