Autor Thema: [gelöst] Zeitschaltuhr in Abhängigkeit von Vorgabe realisieren  (Gelesen 655 mal)

Offline Gisbert

  • Hero Member
  • *****
  • Beiträge: 2624
  • Das Ziel ist das Ziel !
Hallo zusammen,

ich hänge etwas bei obiger Fragestellung.
Vorab, commandref und Wiki habe ich bereits dazu angeschaut, die entsprechenden Links dahin kenne ich demnach.

Mein Anliegen:
Ich möchte eine eigene Steuerung meiner Heizung realisieren und dabei den Zeitschaltuhreingang der Heizung benutzen. Technisch funktioniert das, dazu gibt es keine Fragen.
Die Steuerung kennt damit nur ein und aus. Bei ein legt sie volle Lotte los, bei aus ist Ruhe. Dauernd ein macht keinen Sinn, denn dann läuft sie bei hohen und mittleren Temperaturen in die Taktung.
Was mir vorschwebt, ist ein Reading eines DOIF-Devices, das entsprechend der Außentemperatur (liegt als Reading eines anderen Devices vor), prozentual, oder in Schritten 0%, 10%, 20%, ... 100% den Zeitbereich einer Stunde auf den Wert 1 gesetzt wird, und den Rest der Stunde den Wert 0 hat. Das Setzen eines Readings ist mir klar, mir fehlt im Kern die Bedingung dazu.
Dieses Readings würde ich dann gerne nutzen, um die Heizung zu steuern, dazu habe ich auch keine Fragen.

Viele​ Grüße​ Gisbert​
« Letzte Änderung: 04 Oktober 2021, 21:17:17 von Gisbert »
Aktuelles FHEM | HP ThinClient T610 | Debian11 | UniFi-Controller, AP, USG-3 | Homematic, VCCU, HMUART | ESP8266, Eigenbau | Gas-, Wasser-, Stromzähler | Sonoff | 1-Wire-Temperatursensoren | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF |  Heizungssteuerung komplett in FHEM

Offline Damian

  • Moderator
  • Hero Member
  • ***
  • Beiträge: 9655
Antw:Zeitschaltuhr in Abhängigkeit von Vorgabe realisieren
« Antwort #1 am: 02 Oktober 2021, 16:32:08 »
defmod anteil DOIF { [:00];;\
my $beginTemp=-10;; ##entspricht 100 %\
my $endTemp=15;;    ##entspricht 0 %\
my $curTemp=[?outsensor:temperature];;\
my $m=-100/($endTemp-$beginTemp);;\
my $n=100-$m*$beginTemp;;\
my $prop=$m*$curTemp+$n;;\
my $duration=3600*$prop/100;;\
set_State(1);;\
set_Exec("timer",$duration,"set_State 0");;\
}
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Offline Gisbert

  • Hero Member
  • *****
  • Beiträge: 2624
  • Das Ziel ist das Ziel !
Antw:Zeitschaltuhr in Abhängigkeit von Vorgabe realisieren
« Antwort #2 am: 04 Oktober 2021, 20:46:56 »
Hallo Damian,

dein Lösung funktioniert wunderbar zur Festlegung des Zeitintervalls.

Ich möchte das Ergebnis des state an ein MQTT_DEVICE senden, welches dann den Wert published.
Im FHEM-Modus würde das das so im Ausführungsteil funktionieren:
set <MQTT_DEVICE> <Reading> <value>Es funktioniert ganz sicher, wenn <value> einen Wert hat, also null oder 1, allerdings bin ich mir nicht sicher, ob <value> auch mit ReadingsVal, also so ReadingsVal($name,'state','') funktioniert.
Zusätzlich möchte/kann ich nicht das Reading state zum MQTT_DEVICE senden, da dort state bereits für was anderes verwendet wird.

Gibt es dafür auch eine Lösung, d.h. Setzen eines Readings inkl. Event bei einem anderen Device?

Viele Grüße Gisbert
Aktuelles FHEM | HP ThinClient T610 | Debian11 | UniFi-Controller, AP, USG-3 | Homematic, VCCU, HMUART | ESP8266, Eigenbau | Gas-, Wasser-, Stromzähler | Sonoff | 1-Wire-Temperatursensoren | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF |  Heizungssteuerung komplett in FHEM

Offline Damian

  • Moderator
  • Hero Member
  • ***
  • Beiträge: 9655
Antw:Zeitschaltuhr in Abhängigkeit von Vorgabe realisieren
« Antwort #3 am: 04 Oktober 2021, 21:01:38 »
Hallo Damian,

dein Lösung funktioniert wunderbar zur Festlegung des Zeitintervalls.

Ich möchte das Ergebnis des state an ein MQTT_DEVICE senden, welches dann den Wert published.
Im FHEM-Modus würde das das so im Ausführungsteil funktionieren:
set <MQTT_DEVICE> <Reading> <value>Es funktioniert ganz sicher, wenn <value> einen Wert hat, also null oder 1, allerdings bin ich mir nicht sicher, ob <value> auch mit ReadingsVal, also so ReadingsVal($name,'state','') funktioniert.
Zusätzlich möchte/kann ich nicht das Reading state zum MQTT_DEVICE senden, da dort state bereits für was anderes verwendet wird.

Gibt es dafür auch eine Lösung, d.h. Setzen eines Readings inkl. Event bei einem anderen Device?

Viele Grüße Gisbert

Das kannst du ganz einfach, wie in Perl üblich, machen:

statt

set_State (1);
fhem("set my_mqtt_device my_reading 1");
und

statt

set_Exec("timer",$duration,"set_State 0")
set_Exec("timer",$duration,"fhem('set my_mqtt_device my_reading 0')")
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Offline Gisbert

  • Hero Member
  • *****
  • Beiträge: 2624
  • Das Ziel ist das Ziel !
Antw:Zeitschaltuhr in Abhängigkeit von Vorgabe realisieren
« Antwort #4 am: 04 Oktober 2021, 21:16:55 »
Hallo Damian,

cool - und vielen Dank; da hab ich wieder ein bißchen dazu gelernt.

Viele Grüße Gisbert
Aktuelles FHEM | HP ThinClient T610 | Debian11 | UniFi-Controller, AP, USG-3 | Homematic, VCCU, HMUART | ESP8266, Eigenbau | Gas-, Wasser-, Stromzähler | Sonoff | 1-Wire-Temperatursensoren | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF |  Heizungssteuerung komplett in FHEM