Rollo abhängig von Temperatur (Sonnenschutz)

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

Vorheriges Thema - Nächstes Thema

klaus.schauer

Zitat von: karpate schrieb am Mo, 18 März 2013 15:22Hallo 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

1. Die Standard-Readings waren vorhanden, weil vor dem teach-in Telegram schon Datentelegramme vom Sensor gesendet wurden.
2. Das Teach-In muss erfolgreich gewesen sein, sonst würde das Reading teach-in nicht vorhanden sein. Oder wurde dies auch manuell angelegt?
3. Das Attribut model muss gelöscht werden, da sonst das alte Profil genutzt wird.
4. Leider wurde auch von anderen schon berichtet, dass die Attribute, die per teach-in automatisch gesetzt werden, nicht zuverlässig abgespeichert werden. Es scheint aber eine Lösung zu geben. Ich werde diese aufnehmen, sobald die Tests abgeschlossen sind. Augenblicklich hilft es wohl ein weiteres Mal ein teach-in Telegram zu senden.

MisterEltako

Hi!

Versuche es doch mit der split-Function:

# Sonnenschutz
define SonnenschutzKueche at +*01:00:00 {\
 if (isday()){\
   my $Sensortemp = ReadingsVal("eg_kue_Temp","state",99);;\
   my @@Data = (split (/ /, $Sensortemp);;\
   $Sensortemp = @@Data[0];;\
   Log 3, "Sensortemperatur ist: $Sensortemp";;\
   if ($Sensortemp gt 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,

aktuell sieht mein Code so aus. Ich brauch ein wenig Unterstützung mit der Syntax:
 
# Sonnenschutz Küche
define SonnenschutzKueche at +*01:00:00 {\
my $Sonne = (ReadingsVal("Kirchheim_Wetter","fc1_condition", "kein Wert"));;\
  if (isday()){\
    if  ($Sonne eq "sonnig") {\
      if (ReadingsVal("eg_kue_Rollo","position",99) == 0) {\
         if (ReadingsVal("eg_kue_Temp","state",99) gt 25){fhem("set eg_kue_Rollo down 50")}\
         }\
      }\
   }\
}
attr SonnenschutzKueche room 999_Status


Ich möchte das der Rollo nur um 50% runterfährt, wenn er zuvor in der oberen Stellung ist. Ohne diese Bedingung fährt er jede Stunde 50% runter bis er vollständig zu ist.
Deshalb habe ich diesen Eintrag eingefügt, leider scheint dies nicht zu funktionieren
if (ReadingsVal("eg_kue_Rollo","position",99) == 0)
An dieser Stelle bin ich mir auch nicht sicher ob dieser Teil überhaupt von Syntax und Befehlen richtig ist.
Ich hoffe jemand kann mir helfen.

(http://forum.fhem.de/index.php?t=getfile&id=2882&rid=55)

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

klaus.schauer

Zitat von: karpate schrieb am Mi, 17 April 2013 19:48Hallo,

aktuell sieht mein Code so aus. Ich brauch ein wenig Unterstützung mit der Syntax:
 
# Sonnenschutz Küche
define SonnenschutzKueche at +*01:00:00 {\
my $Sonne = (ReadingsVal("Kirchheim_Wetter","fc1_condition", "kein Wert"));;\
  if (isday()){\
    if  ($Sonne eq "sonnig") {\
      if (ReadingsVal("eg_kue_Rollo","position",99) == 0) {\
         if (ReadingsVal("eg_kue_Temp","state",99) gt 25){fhem("set eg_kue_Rollo down 50")}\
         }\
      }\
   }\
}
attr SonnenschutzKueche room 999_Status


Ich möchte das der Rollo nur um 50% runterfährt, wenn er zuvor in der oberen Stellung ist. Ohne diese Bedingung fährt er jede Stunde 50% runter bis er vollständig zu ist.
Deshalb habe ich diesen Eintrag eingefügt, leider scheint dies nicht zu funktionieren
if (ReadingsVal("eg_kue_Rollo","position",99) == 0)
An dieser Stelle bin ich mir auch nicht sicher ob dieser Teil überhaupt von Syntax und Befehlen richtig ist.
Ich hoffe jemand kann mir helfen.

(http://forum.fhem.de/index.php?t=getfile&id=2882&rid=55)

Gruß und Danke
ingo

Warum nicht einfach set <name> position 50 statt set <name> down 50 eingeben? Für das Anfahren einer bestimmten Position gibt es doch den neuen Befehl. Wichtig dabei ist die richtige shutTime und ein definierter Ausgangspunkt.

karpate

Danke, werde ich ändern.
Mein Problem besteht darin das ich nicht weiß, wie genau ich das Reading Position korrekt abfragen...

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

karpate

@klaus.schauer
funktioniert wunderbar

@MisterEltako
habe mit dem Spilt experimentiert, bekomme leider Fehlermeldungen

define SonnenschutzKueche at +*00:01:00 {\
my $Sonne = (ReadingsVal("Kirchheim_Wetter","fc1_condition", "kein Wert"));;\
my $Sensortemp = ReadingsVal("eg_kue_Temp","state",99);;\
my @@Data = (split (/ /, $Sensortemp));;\
$Sensortemp = @@Data[0];;\
Log 3, "Sensortemperatur ist: $Sensortemp";;\
  if (isday()){\
    if  ($Sonne eq "sonnig") {\
      if (ReadingsVal("eg_kue_Rollo","position",0) == 0) {\
         if ($Sensortemp gt 25){fhem("set eg_kue_Rollo position 50")}\
         }\
      }\
   }\
}
attr SonnenschutzKueche room 999_Status


 
Bareword found where operator expected at (eval 959) line 1, near "@@Data"
   (Missing operator before Data?)
Bareword found where operator expected at (eval 959) line 1, near "@@Data"
   (Missing operator before Data?)
2013.04.19 16:17:20 3: Can't use global @@ in "my" at (eval 959) line 1, near "my @@"
syntax error at (eval 959) line 1, near "@@Data "
syntax error at (eval 959) line 1, near "@@Data"
# Pi3 (BBB;FB7390)
# TCM310, CUL V4, HM-CFG-LAN,JeeLink,Tradfri,ESP32-Cam@MQTT: Wasseruhr

hightower

Hallo Karpate,

habe mir Deinen Code angesehen. Folgendes ist mir dabei aufgefallen:

a) Du prüft jede Minute, ob Deine Bedingungen eingetreten sind. Das kann bei einer größeren Steuerung Ressourcen beanspruchen, die man an anderer Stelle braucht. Besser wären alle 10 Minuten. So schnell springen die Temperaturen nicht :-).

b) Beim Prüfen in Zeitintervallen kann das Problem auftreten, dass ein manuelles Eingreifen (z.B. Rollo ist gerade hochgefahren, weil man den Blumenkasten vor dem Fenster giessen will) wieder zurückgesetzt wird. Da geht das Rollo manuell hoch und eventuell sofort wieder durch die Steuerung runter. Das kann nerven. Die Frage wird sein, wer nach einem manuellen Eingreifen für den Zustand verantwortlich, die Steuerung oder der Mensch. Ich habe mich für den Menschen entschieden.

c) Die Sensorzeile im folgenden Code ist erst einmal überflüssig. Steht zu Testzwecken drin.

d) Beim Aktuator HM-LC-Bl1PBU-FM habe ich kein "position", sondern ein "pct".


define Hitzeschutz at *10:00:00 {\
my $Vorhersagetemp = (ReadingsVal("Wetter","fc1_high_c", "kein Wert"));;\
my $Sensortemp = ReadingsVal("aussen_TempNord", "temperature", "kein Wert");;\
Log 3, "Vorhersage: $Vorhersagetemperatur, Sensortemperatur: $Sensortemp";;\
    if  ($Vorhersagetemp gt 30) {\
      {fhem("set kue_Rollo pct 30")}\
      }\
}


Tschuess,

hightower

karpate

Hallo hightower

a) die Frequenz war nur zu Testzwecken auf 1 Minute eingestellt. Prüfe sonst jede Stunde.
b) bei mir fährt der Rolladen auch nur runter, wenn er in Position 0 (oben) vorher war
d) set eg_kue_Rollo position 50 funktioniert bei EnOcean wunderbar
# Pi3 (BBB;FB7390)
# TCM310, CUL V4, HM-CFG-LAN,JeeLink,Tradfri,ESP32-Cam@MQTT: Wasseruhr

karpate

Zitat1. Die Standard-Readings waren vorhanden, weil vor dem teach-in Telegram schon Datentelegramme vom Sensor gesendet wurden.
2. Das Teach-In muss erfolgreich gewesen sein, sonst würde das Reading teach-in nicht vorhanden sein. Oder wurde dies auch manuell angelegt?
3. Das Attribut model muss gelöscht werden, da sonst das alte Profil genutzt wird.
4. Leider wurde auch von anderen schon berichtet, dass die Attribute, die per teach-in automatisch gesetzt werden, nicht zuverlässig abgespeichert werden. Es scheint aber eine Lösung zu geben. Ich werde diese aufnehmen, sobald die Tests abgeschlossen sind. Augenblicklich hilft es wohl ein weiteres Mal ein teach-in Telegram zu senden.

Hallo klaus.schauer
Habe Attribut model gelöscht und ein neus teach-in gesendet. Et voilà, Reading temperature wird jetzt angezeigt. Nur das Attribut model wird nicht mehr angezeigt. Ist das richtig?
Danke und Gruß ingo
# Pi3 (BBB;FB7390)
# TCM310, CUL V4, HM-CFG-LAN,JeeLink,Tradfri,ESP32-Cam@MQTT: Wasseruhr

klaus.schauer

Zitat von: karpate schrieb am Di, 30 April 2013 20:33
Zitat1. Die Standard-Readings waren vorhanden, weil vor dem teach-in Telegram schon Datentelegramme vom Sensor gesendet wurden.
2. Das Teach-In muss erfolgreich gewesen sein, sonst würde das Reading teach-in nicht vorhanden sein. Oder wurde dies auch manuell angelegt?
3. Das Attribut model muss gelöscht werden, da sonst das alte Profil genutzt wird.
4. Leider wurde auch von anderen schon berichtet, dass die Attribute, die per teach-in automatisch gesetzt werden, nicht zuverlässig abgespeichert werden. Es scheint aber eine Lösung zu geben. Ich werde diese aufnehmen, sobald die Tests abgeschlossen sind. Augenblicklich hilft es wohl ein weiteres Mal ein teach-in Telegram zu senden.

Hallo klaus.schauer
Habe Attribut model gelöscht und ein neus teach-in gesendet. Et voilà, Reading temperature wird jetzt angezeigt. Nur das Attribut model wird nicht mehr angezeigt. Ist das richtig?
Danke und Gruß ingo
Sehr gut, Attribut model wird nicht benötigt. Falls das teach-in funktioniert sind weitere manuelle Vorgaben zum Sensor nicht nötig.

karpate

habe weitere SR04P Sensoren mit dem dem Profil roomSensorControl.05 eingelernt.
Dabei ist mir aufgefallen Reading "state" zwar Setpoint (SP) beinhaltet, aber nicht als Celsius-Wert anzeigt.
Bei Reading "T" ist SP = 0.
Ist das noch ein Fehler?


(siehe Anhang / see attachement)

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

klaus.schauer

Zitat von: karpate schrieb am Mi, 01 Mai 2013 13:22habe weitere SR04P Sensoren mit dem dem Profil roomSensorControl.05 eingelernt.
Dabei ist mir aufgefallen Reading "state" zwar Setpoint (SP) beinhaltet, aber nicht als Celsius-Wert anzeigt.
Bei Reading "T" ist SP = 0.
Ist das noch ein Fehler?


(siehe Anhang / see attachement)

Die Readings T und set_point sind Relikte aus dem alten Profil. Bitte mit deletereading löschen. setpoint ist im neuen Profil ein numerischer Wert von 0 ... 255. Scheint alles in Ordnung zu sein.

karpate

Ok.
Wäre es nicht sinnvoller setpoint als Celsius-Wert anzuzeigen? Jetzt wird leider kein Sollwert mehr in meinem Plot angezeigt.
Kann eigentlich setpoint per FHEM geändert werden?
# Pi3 (BBB;FB7390)
# TCM310, CUL V4, HM-CFG-LAN,JeeLink,Tradfri,ESP32-Cam@MQTT: Wasseruhr

klaus.schauer

Zitat von: karpate schrieb am Mi, 01 Mai 2013 14:37Ok.
Wäre es nicht sinnvoller setpoint als Celsius-Wert anzuzeigen?
Kann eigentlich setpoint per FHEM geändert werden?
Bei den Ausgabewerten in den Readings habe ich mich möglichst genau an die EnOncean Protokolldefinitionen gehalten (EEP). Bei diesem Profil wird der Ausgabewert für Setpoint unverändert ausgegeben.

Man kann aber jedes Reading mit Hilfe des Attributes userReadings ganz nach seinen eigenen Anforderungen umformatieren und anders skalieren. Deshalb habe ich auch darauf verzichtet spezielle Skalierungsfunktionen einzubauen. Ich habe die Funktion bisher selbst nicht getestet. In der commandref unter attr sind aber eine ganze Reihe von Beispielen aufgelistet

karpate

Danke
Folgenden Eintrag habe ich ergänzt
attr eg_kue_Temp userReadings set_point { ReadingsVal("eg_kue_Temp","setpoint",0)/6.375; }

Werte werden berechner und im Plot angezeigt.
Gibt es einen offiziellen Faktor den ich verwenden kann?
# Pi3 (BBB;FB7390)
# TCM310, CUL V4, HM-CFG-LAN,JeeLink,Tradfri,ESP32-Cam@MQTT: Wasseruhr