Autor Thema: Katze drinnen / draußen Status  (Gelesen 4136 mal)

Offline Maergsche

  • Jr. Member
  • **
  • Beiträge: 66
Katze drinnen / draußen Status
« am: 23 Mai 2013, 12:42:15 »
Hallo,

Ich stehe bei der Programmierung des Katze drinnen / Katze draußen auf dem Schlauch.

Vorerst die Rahmenbedingungen:
-An der Katzenklappe habe ich einen KSE der geht beim
Entriegeln der Katzenklappe auf ON und 4 Sec. nach verriegeln der Katzenklappe auf off.
-Draußen vor der Katzenklappe habe ich einen Piri, der bei Bewegungserkennung auf "on-old-for-timer 60"
schaltet.

Nun habe ich folgendes Definiert:

define KSE_Katzenklappe FS20 445f 08
attr KSE_Katzenklappe room Keller
define FileLog_KSE_Katzenklappe FileLog ./log/KSE_Katzenklappe-%Y.log KSE_Katzenklappe
attr FileLog_KSE_Katzenklappe logtype text
attr FileLog_KSE_Katzenklappe room FileLog

define Piri_Katzenklappe FS20 445f 09
attr Piri_Katzenklappe follow-on-for-timer 1
attr Piri_Katzenklappe room Keller
define FileLog_Piri_Katzenklappe FileLog ./log/Piri_Katzenklappe-%Y.log Piri_Katzenklappe
attr FileLog_Piri_Katzenklappe logtype text
attr FileLog_Piri_Katzenklappe room FileLog

define Status_Katze dummy
attr Status_Katze eventMap on:Drinnen off:Drausen
attr Status_Katze room Keller
define FileLog_Status_Katze FileLog ./log/Status_Katze-%Y.log Status_Katze
attr FileLog_Status_Katze logtype text
attr FileLog_Status_Katze room FileLog


define n_Katze_rein notify KSE_Katzenklappe:off.*  { if ("$value{Status_Katze}" eq "Drausen" ) { fhem("set Piri_Katzenklappe off;; set Status_Katze on"  )} }

define n_katze_raus notify Piri_Katzenklappe:on.* { if ( "$value{Status_Katze}" eq "Drinnen" && "$value{KSE_Katzenklappe}" eq "on" ) { fhem("set Piri_Katzenklappe off;; set Status_Katze off" )} }


Ich habe mal die Logs in Zeitliche Reihenfolge gebracht:
2013-05-23_02:09:28 KSE_Katzenklappe on
2013-05-23_02:09:32 Piri_Katzenklappe on-old-for-timer 60
2013-05-23_02:09:32 Status_Katze Drausen
2013-05-23_02:09:35 KSE_Katzenklappe off
2013-05-23_02:09:35 Piri_Katzenklappe off
2013-05-23_02:09:35 Status_Katze Drinnen

2013-05-23_02:55:35 Piri_Katzenklappe on-old-for-timer 60
2013-05-23_02:55:54 KSE_Katzenklappe on
2013-05-23_02:56:00 Piri_Katzenklappe on-old-for-timer 60
2013-05-23_02:56:00 Status_Katze Drausen
2013-05-23_02:56:04 KSE_Katzenklappe off
2013-05-23_02:56:04 Piri_Katzenklappe off
2013-05-23_02:56:04 Status_Katze Drinnen

Hat jemand Lust mir zu helfen?
 

Offline Markus M.

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2982
  • Dringenden Angelegenheiten bitte per Email
Aw: Katze drinnen / draußen Status
« Antwort #1 am: 11 Juni 2013, 23:09:29 »

define n_Katze_rein notify KSE_Katzenklappe:on.* { if ("$value{Status_Katze}" eq "Drausen"  && "$value{Piri_Katzenklappe}" eq "on") { fhem("set KSE_Katzenklappe off;; set Piri_Katzenklappe off;; set Status_Katze on" )} }

define n_katze_raus notify Piri_Katzenklappe:on.* { if ( "$value{Status_Katze}" eq "Drinnen" && "$value{KSE_Katzenklappe}" eq "on" ) { fhem("set KSE_Katzenklappe off;; set Piri_Katzenklappe off;; set Status_Katze off" )} }

Könnte das so klappen?
FHEM dev + HomeBridge + Lenovo Flex15 + HM-CFG-USB + RFXtrx433 + Fritz!Box 7590/7580/546E

HM Aktor/Sensor/Winmatic/Keymatic/Thermostat, HUE, Netatmo Weather/Security/Heating, Xiaomi AirPurifier/Vacuum, Withings Aura/BPM/Cardio/Go/Pulse/Thermo, VSX828, Harmony, Siro ERB15LE
https://paypal.me/mm0

Offline Maergsche

  • Jr. Member
  • **
  • Beiträge: 66
Aw: Katze drinnen / draußen Status
« Antwort #2 am: 18 Juni 2013, 10:43:21 »
Hallo, danke für den Code ... ich hatte es direkt mal getestet, doch leider funktionierte es nur, wenn ich es selbst über die Schalter des Piri und des KSE getestet hatte.

Grund war, das der Piri ein "on-old-for-timer 60" gesendet hat, und dadurch bei der Abfrage "$value{Piri_Katzenklappe}" eq "on") scheinbar ein false zurück gemeldet wird.

Ich habe den Code daraufhin noch mal angepasst...

define n_Katze_rein notify KSE_Katzenklappe:on.* { if ("$value{Status_Katze}" eq "Drausen" && substr("$value{Piri_Katzenklappe}",0,2) eq "on") { fhem("set KSE_Katzenklappe off;; set Piri_Katzenklappe off;; set Status_Katze on" )} }

define n_katze_raus notify Piri_Katzenklappe:on.* { if ( "$value{Status_Katze}" eq "Drinnen" && "$value{KSE_Katzenklappe}" eq "on" ) { fhem("set KSE_Katzenklappe off;; set Piri_Katzenklappe off;; set Status_Katze off" )} }

Mal sehen ob das läuft .... Ich melde mich die Tage nochmal !

Offline Puschel74

  • Hero Member
  • *****
  • Beiträge: 9839
Aw: Katze drinnen / draußen Status
« Antwort #3 am: 18 Juni 2013, 10:51:48 »
Hallo,

$value bitte gegen Value tauschen.
$value funktioniert zwar noch wird aber nicht mehr explizit unterstützt.
Probleme in der Zukunft sind damit so gut wie vorprogrammiert.

Das
Zitat
"$value{Piri_Katzenklappe}" eq "on")

liefert natürlich false zurück wenn der Sender on-old-for-timer sendet da
on != on-old-for-timer
Evtl. würde das klappen:
Zitat
"$value{Piri_Katzenklappe}" eq "on.*")


Du könntest aber auf
ne "off"
prüfen.

Grüße

Edith:
{ if (Value("Status_Katze") eq "Drausen" && (Value("Piri_Katzenklappe") eq "on.*"))
Als Beispiel
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.

Offline Maergsche

  • Jr. Member
  • **
  • Beiträge: 66
Aw: Katze drinnen / draußen Status
« Antwort #4 am: 18 Juni 2013, 11:25:50 »
Zitat von: Puschel74 schrieb am Di, 18 Juni 2013 10:51
Hallo,

Evtl. würde das klappen:
Zitat
"$value{Piri_Katzenklappe}" eq "on.*")


Du könntest aber auf
ne "off"
prüfen.



Also ich finde meine Lösung mit dem Substr besser ;-) ... obwohl die Negativprüfung auch eine gute Idee ist!

Ansonsten habe ich das Value mal umgeschrieben ... Danke für den Tip !

Der Aktuelle Code:
define n_Katze_rein notify KSE_Katzenklappe:on.* { if (Value("Status_Katze") eq "Drausen" && substr(Value("Piri_Katzenklappe"),0,2) eq "on") { fhem("set KSE_Katzenklappe off;; set Piri_Katzenklappe off;; set Status_Katze on" )} }

define n_Katze_raus notify Piri_Katzenklappe:on.* { if (Value("Status_Katze") eq "Drinnen" && Value("KSE_Katzenklappe") eq "on" ) { fhem("set KSE_Katzenklappe off;; set Piri_Katzenklappe off;; set Status_Katze off" )} }