Beschattung mit Doif , erste Gehversuche

Begonnen von Aladin222, 13 Mai 2015, 09:35:44

Vorheriges Thema - Nächstes Thema

Aladin222

hi @all

ich wollte folgendes realisieren :
Über eine Abfrage der Photovoltaikanlage ( solarlog_dailyyield ) wollte ich bei einem Wert über 1.5 die Jalousien in der Küche auf 30 % absenken.
Dafür habe ich schon einen EventMap definiert, Sonne entspricht nun 30% - somit ist das ganze über Button händisch also schonmal machbar :-)
Um das ganze zu automatisieren habe ich einen Dummy angelegt um die Automatik ein und auszuschalten. ( RolloAutoSchattenEinAus )

Rollo in der Küche rechts
define RolloKueRechts CUL_HM 2FF097
attr RolloKueRechts IODev CUL_HM
attr RolloKueRechts autoReadReg 4_reqStatus
attr RolloKueRechts devStateIcon 0:fts_shutter_10 10:fts_shutter_20 20:fts_shutter_30 30:fts_shutter_40 40:fts_shutter_50 50:fts_shutter_60 70:fts_shutter_80 80:fts_shutter_90 100:fts_shutter_100
attr RolloKueRechts eventMap on:Zu off:Auf 30:Sonne
attr RolloKueRechts expert 2_full
attr RolloKueRechts firmware 2.3
attr RolloKueRechts model HM-LC-Bl1PBU-FM
attr RolloKueRechts param levelInverse
attr RolloKueRechts peerIDs 00000000,
attr RolloKueRechts room Rolladen
attr RolloKueRechts serialNr LEQ1021335
attr RolloKueRechts subType blindActuator
attr RolloKueRechts webCmd Zu:pct:Auf:stop:Sonne


Dummy zum ein -ausschalten der Beschattung
define RolloAutoSchattenEinAus dummy
attr RolloAutoSchattenEinAus devStateIcon on:fts_shutter_automatic@green off:general_aus_fuer_zeit@red
attr RolloAutoSchattenEinAus eventMap on:on off:off
attr RolloAutoSchattenEinAus group RolloTimer
attr RolloAutoSchattenEinAus room Rolladen
attr RolloAutoSchattenEinAus webCmd :


Wie bekomme ich das nun zusammen ?

define RolladenBeschattung DOIF (([solarlog_dailyyield]<1.5) and [RolloAutoSchattenEinAus]=on) (set RolloKueRechts Sonne)\

Das alleine scheint nicht zu reichen :-(

scooty

Hallo,

probiere es 'mal mit

[RolloAutoSchattenEinAus] eq "on"

Andreas
Fhem auf Gigabyte Brix
CUL V3 HM / CUL V3 MAX / MaxCube aFW Homematic&MAX / ZWave.me ZME_UZB1 / SDuino 433 / Velux KLF200
Homematic / MAX / Logitech Hub / ZWave / Wifi LED / div. 433 Temperatursensoren / pywws WH1080 / IO Homecontrol

Aladin222

schonmal Danke für Deine Hilfe !

Ok - scheint nen Schritt weiter zu gehen :-)

nun kommt :

RolladenBeschattung DOIF: expected DOELSEIF or DOELSE:

denke er erwartet nun ein DOELSE ?
Hmmm, er soll nix machen :-)

flurin

#3
Eine Klammer zu viel, "über 1.5" > 1.5 und do always


define RolladenBeschattung DOIF ([solarlog_dailyyield]>1.5 and [RolloAutoSchattenEinAus] eq "on") (set RolloKueRechts Sonne)
attr RolladenBeschattung do always


Gruss
flurin

Aladin222

Danke dir , das mit der Klammer hatte ich gefunden und den falschen > auch :-)
Leider will er immer noch ein DOELSE --- ich sehe nun den Wald vor lauter Bäumen nicht *grrrr

flurin

Zitat von: Aladin222 am 13 Mai 2015, 10:24:04
Danke dir , das mit der Klammer hatte ich gefunden und den falschen > auch :-)
Leider will er immer noch ein DOELSE --- ich sehe nun den Wald vor lauter Bäumen nicht *grrrr

Okey

Was zeigt (im FHEM Eingabefeld eintippen):


list RolladenBeschattung

Aladin222

yeahhh es tut sich was :-)

hab nun folgendes gemacht:
define RolladenBeschattung DOIF ([solarlog_dailyyield] > 2 and [RolloAutoSchattenEinAus] eq "on") (set RolloKueRechts Sonne) DOELSE (set RolloKueRechts up)
attr RolladenBeschattung do always


Ein list ergibt nun:
Internals:
   CFGFN      /opt/fhem/FHEM/24_Rolladen.cfg
   DEF        ([solarlog_dailyyield] > 2 and [RolloAutoSchattenEinAus] eq "on") (set RolloKueRechts Sonne) DOELSE (set RolloKueRechts up)
   NAME       RolladenBeschattung
   NR         487
   NTFY_ORDER 50-RolladenBeschattung
   STATE      cmd_1
   TYPE       DOIF
   Readings:
     2015-05-13 10:31:58   cmd_event       solarlog_dailyyield
     2015-05-13 10:31:58   cmd_nr          1
     2015-05-13 10:31:58   e_solarlog_dailyyield_STATE 3.19
     2015-05-13 10:31:58   state           cmd_1
   Condition:
     0          InternalDoIf('solarlog_dailyyield','STATE','') > 2 and InternalDoIf('RolloAutoSchattenEinAus','STATE','') eq "on"
   Devices:
     0           solarlog_dailyyield RolloAutoSchattenEinAus
     all         solarlog_dailyyield RolloAutoSchattenEinAus
   Do:
     0          set RolloKueRechts Sonne
     1          set RolloKueRechts up
   Helper:
     last_timer 0
     sleeptimer -1
   Internals:
     0           solarlog_dailyyield:STATE RolloAutoSchattenEinAus:STATE
     all         solarlog_dailyyield:STATE RolloAutoSchattenEinAus:STATE
   Itimer:
   Readings:
   State:
   Trigger:
Attributes:
   do         always

flurin

Es müsste auch ohne DOELSE gehen.

Führe ein "shutdown restart" aus und versuche nochmals ohne DOELSE.

Aladin222

ja teste ich auch noch mal aus !
Aber wenn ich es nun gerafft habe könnte ich ja mit wait ZEIT einen Zeitraum definieren , oder ?
Dann würde Fhem ja ,wenn die Sonne weg ist die Beschattung aufheben und DoIf ausführen und die Rollos wieder hoch fahren , oder ?

Danke für deine Hilfe !!!

flurin

Zitat von: Aladin222 am 13 Mai 2015, 10:56:13
ja teste ich auch noch mal aus !
Aber wenn ich es nun gerafft habe könnte ich ja mit wait ZEIT einen Zeitraum definieren , oder ?
Dann würde Fhem ja ,wenn die Sonne weg ist die Beschattung aufheben und DoIf ausführen und die Rollos wieder hoch fahren , oder ?

Danke für deine Hilfe !!!

Siehe Commandref DOIF, da findest du Beispiele mit sunset und Zeitintervallen.

Aladin222

ja bin da gerade :-)

Danke für deinen ruck in die richtige Richtung  :D :D :D