Rollo abhängig von Temperatur (Sonnenschutz)

Begonnen von karpate, 08 März 2013, 21:10:31

Vorheriges Thema - Nächstes Thema

karpate

Hallo,
ich versuche in Abhängigkeit der Temperatur die vom Raumthermostat SR04P geliefert wird, den Rollo in eine "schattenstellung" zu fahren (50%).
Mit Hilfe der Einsteiger-Guideline habe ich diesen Code aufgebaut.
Bitte um Hilfe bzw. Verbesserungsvorschläge, wie am Besten dieses Anwendung ausgeführt werden kann.


# Sonnenschutz
define SonnenschutzKueche at +*01:00:00
{ if (isday())
{ if (ReadingsVal(,,eg_kue_Temp","state",99) > 24)
{ fhem("set eg_kue_Rollo down 50%") }
}
}
attr SonnenschutzKueche room 999_Status


Danke ingo
# Pi3 (BBB;FB7390)
# TCM310, CUL V4, HM-CFG-LAN,JeeLink,Tradfri,ESP32-Cam@MQTT: Wasseruhr

klaus.schauer

Das Prozentzeichen im Fahrkommando sollte weg.

karpate

Hallo,

danke für den Tipp. Hast natürlich Recht.
Habe noch die Backschlashzeichen hinzugefügt.


# Sonnenschutz
define SonnenschutzKueche at +*01:00:00 \
{ if (isday())\
{ if (ReadingsVal(,,eg_kue_Temp","state",99) > 24) \
{ fhem("set eg_kue_Rollo down 50") } \
} \
}
attr SonnenschutzKueche room 999_Status
# Pi3 (BBB;FB7390)
# TCM310, CUL V4, HM-CFG-LAN,JeeLink,Tradfri,ESP32-Cam@MQTT: Wasseruhr

karpate

Hallo,

es scheint noch nicht richtig zu sein

Im Log finde ich stündlich diesen Eintrag
2013.03.09 11:00:23 3: Unrecognized character \xE2; marked by <-- HERE after adingsVal(<-- HERE near column 36 at (eval 745) line 1.

Gruß ingo
# Pi3 (BBB;FB7390)
# TCM310, CUL V4, HM-CFG-LAN,JeeLink,Tradfri,ESP32-Cam@MQTT: Wasseruhr

MisterEltako

Hi!

Vielleicht gibt der Sensor nicht nur die Temperatur als Zahl zurück?
Versuch doch mal das mit folgenden Ergänzungen zu schauen:

# Sonnenschutz
define SonnenschutzKueche at +*01:00:00 {\
my $Test = ReadingsVal(,,eg_kue_Temp","state",99);;
Log 3, "Gelesene Temperatur: $Test";;\

 if (isday()){\
   if (ReadingsVal(,,eg_kue_Temp","state",99) > 24){fhem("set eg_kue_Rollo down 50")}\
 }\
}
attr SonnenschutzKueche room 999_Status

MfG, MisterEltako

HMLAN-Konfigurations-Adapter, HM-Funkjalousieaktor/HM-Dimmaktor/HM-Schaltaktor f. Markenschalter, Jalousie-/Schaltaktor von Eltako, FT4 v. Eltako, TCM310

karpate

Hallo,

mit deiner Ergänzung erhalte ich eine Error-Meldung: Unknown command Log, try help

Ich denke deine Vermutung ist richtig: Readings ist z.B. "state temperature 21.8 2013-03-11 20:00:59"

Wie muß der Code angepaßt werden?

Gruß ingo
# Pi3 (BBB;FB7390)
# TCM310, CUL V4, HM-CFG-LAN,JeeLink,Tradfri,ESP32-Cam@MQTT: Wasseruhr

borsti67

ich würde meinen, der Hinweis steht doch in der Fehlermeldung:

Zitat{if (ReadingsVal(,,[/color]eg_kue_Temp","state",99) > 24)

...ersetze mal dieses typographische Anführungszeichen durch ein normales - wie sieht es dann aus?
cu/2
Borsti
---
FHEM 5.8 auf Synology DS211j (bis 11/17) | FHEM 6.0 auf Raspi Zero W (bis 11/20) | FHEM 6.2 als VM in Synology DS1815+ (ab 11/20)

karpate

Hallo Borsti,


# Sonnenschutz
define SonnenschutzKueche at +*01:00:00 {\
  if (isday()){\
     if (ReadingsVal("eg_kue_Temp","state",99) > 24){fhem("set eg_kue_Rollo down 50")}\
  }\
}
attr SonnenschutzKueche room 999_Status


So erhalte ich erstmal keine Fehlermeldung.

Ich glaube im Heimautomatisierung-mit-fhem.pdf auf Seite 32 werden dann die falschen Anführungszeichen gezeigt.

Gruß ingo
# Pi3 (BBB;FB7390)
# TCM310, CUL V4, HM-CFG-LAN,JeeLink,Tradfri,ESP32-Cam@MQTT: Wasseruhr

karpate

Hallo,

ich denke vom Syntax her passt der Code nun, allerdings steht jetzt Log jetzt:

Argument "temperature 22.1" isn't numeric in numeric gt (>) at (eval 1193) line 1.

Wie vorher schon vermutet, kommt dies vermutlich vom unterschiedlichen Readings

(siehe Anhang / see attachement)


Leider weiß ich nicht wie ich den Code richtigerweise anpassen muß. Vielleicht kann jemand mir nochmals unter die Arme greifen.
Danke

Gruß ingo
# Pi3 (BBB;FB7390)
# TCM310, CUL V4, HM-CFG-LAN,JeeLink,Tradfri,ESP32-Cam@MQTT: Wasseruhr

klaus.schauer

Mit der aktuellen Version des EnOcean-Moduls gibt es jetzt das Profil roomSensorControl.01. Einfach mal ein teach-in Telegramm vom Sensor senden. Dann sollte das neue Profil (subType) automatisch per autocreate zugewiesen werden.

Im neuen Profil gibt es ein Reading "temperature" dort steht die Temperatur nummerisch drin. Das sollte sich dann leicht abfragen lassen. Einzelheiten zu dem Profil gibts in der commandref.

karpate

Hallo Klaus,

habe Update auf neueste 10_EnOcean.pm durchgeführt und am Sensor die Learn-Taste gedrückt. Jetzt werden diese Readings angezeigt

(siehe Anhang / see attachement)


Im Readings "state" stehe aber immer noch "temperature..."

(siehe Anhang / see attachement)


Habe ich was falsch gemacht?

Gruß ingo
# Pi3 (BBB;FB7390)
# TCM310, CUL V4, HM-CFG-LAN,JeeLink,Tradfri,ESP32-Cam@MQTT: Wasseruhr

klaus.schauer

Zitat von: karpate schrieb am Mi, 13 März 2013 20:57Hallo Klaus,

habe Update auf neueste 10_EnOcean.pm durchgeführt und am Sensor die Learn-Taste gedrückt. Jetzt werden diese Readings angezeigt

(siehe Anhang / see attachement)


Im Readings "state" stehe aber immer noch "temperature..."

(siehe Anhang / see attachement)


Habe ich was falsch gemacht?

Gruß ingo

Am besten mal alle Einträge des Sensors aus der fhem.cfg löschen und die Readings mit deletereading <devspec> <readingname> entfernen. Dann den Sensor neu anlernen und auch ein normales Datentelegramm nach dem teach-in empfangen.

Werden denn die Attribute subType und manufID neu und richtig gesetzt? manufID müsste "002" sein

karpate

Hallo Klaus,

konnte jetzt erst wieder testen.
Habe den Sensor komplett aus der cfg entfernt und wieder eingelernt (teach-in = drücken des Knopfes auf der Rückseite des Sensors).
Das hatte dazu geführt das nur Readings angezeigt wurden: D1,D2,D3 etc.
Durch manuelles eintragen von
define eg_kue_Temp EnOcean 0004F346
attr eg_kue_Temp manufID 002
attr eg_kue_Temp model SR04P
attr eg_kue_Temp subType roomSensorControl.05


wurden wieder die gewohnten Readings angezeigt. Leider aber immer noch "state: temperature..."

(siehe Anhang / see attachement)


Vielleicht kannst du mir noch einen weiteren Tipp geben.

Gruß ingo
# Pi3 (BBB;FB7390)
# TCM310, CUL V4, HM-CFG-LAN,JeeLink,Tradfri,ESP32-Cam@MQTT: Wasseruhr

karpate

Hallo,
ich habe den Code minimal geändert:

# Sonnenschutz
define SonnenschutzKueche at +*01:00:00 {\
  if (isday()){\
     if (ReadingsVal("eg_kue_Temp","state",99) gt 24){fhem("set eg_kue_Rollo down 50")}\
  }\
}
attr SonnenschutzKueche room 999_Status

Damit wird der Stringvergleich ausgeführt.
Jetzt muß ich nur noch ein zusätzliches Reading abfragen um zu wissen, ob die Sonne scheint...

Gruß ingo
# Pi3 (BBB;FB7390)
# TCM310, CUL V4, HM-CFG-LAN,JeeLink,Tradfri,ESP32-Cam@MQTT: Wasseruhr

karpate

habe es jetzt so gelöst:


define SonnenschutzKueche at +*01:00:00 {\
my $Sonne = (ReadingsVal("Test_Wetter","fc1_condition", "kein Wert"));;\
  if (isday()){\
    if  ($Sonne eq "sonnig") {\
      if (ReadingsVal("eg_kue_Temp","state",99) gt 24){fhem("set eg_kue_Rollo down 50")}\
  }\
}\
}
attr SonnenschutzKueche room 999_Status


Dabei ist Test_Wetter vorher schon definiert wie im Wiki beschrieben.

Gerne Vorschlöge und Tipps wie es eventuell besser gelöst werden könnte. Evenutell auch auf Hinblick, dass $Sonne für mehrere Rollos verwendet werden soll.
Gruß ingo
# Pi3 (BBB;FB7390)
# TCM310, CUL V4, HM-CFG-LAN,JeeLink,Tradfri,ESP32-Cam@MQTT: Wasseruhr