FHEM Forum

FHEM - Hausautomations-Systeme => MAX => Thema gestartet von: Kharim am 20 Dezember 2015, 09:10:47

Titel: Temperaturscanner "Quick and Dirty"
Beitrag von: Kharim am 20 Dezember 2015, 09:10:47
Hallo Zusammen,

ich habe mal versucht den (einen) Temperaturscanner nachzubauen.
Dabei waren mir einige persönliche Dinge wichtig, die der MAX Themperatur Scanner von "John" leider nicht "berücksichtigt":
http://forum.fhem.de/index.php/topic,11624.0.html (http://forum.fhem.de/index.php/topic,11624.0.html)

Das Ergebnis dessen möchte ich euch nun gerne kurz vorstellen:

Ausgangspunkt / Ziele:
- Die IST Themperatur soll immer erfasst werden - auch wenn Fenster geöffnet ist, Boost läuft oder Ähnliches.
  (Gerade im Sommer möchte ich auch bei länger offenem/angekipten Fenster die IST Temperatur erfassen)
- Der Scanner kann nur auf Änderung der Soll Temperatur beruhen
  (Es soll kein Wochenprogramm unterbrochen werden wie beim Moduswechsel)
- Der Scanner darf keine fixe Temperatur besitzen, sondern muss auf der am Thermostat eingestellten Temperatur arbeiten
  (Eine Änderung des Modus/ der Temperatur am Thermostat, darf vom Scanner nicht rückgängig gemacht werden)
- Erfassungszeitraum alle 15 Minuten
- Möglichst wenige Credits verbrauchen -> nur ein Schaltsignal alle 15 Minuten

Umsetzung:
Aus den letzten beiden Punkten ergibt sich eine Themperaturänderung um 0,5°C alle 15 Minuten.
Dies ist vieleicht nicht schön, stört mich persöblich aber herzlich wenig, ob nun die Themperatur ein halbes Grad mehr ist oder nicht.
Zu jedem Thermostat müssen nun also zwei Werte (in Dummys) gespeichert werden:
- die Schaltrichtung (wird die Themperatur erhöht oder verringert)
- Zieltemperatur des vorangegangenen Schaltvorgangs (zur Kontrolle ob dieser Erfolgreich war.)

Nehmen wir also an unser Thermostat hat eine momentane Temperatur von 19°C:
-> Dummy "TScanBadZiel" erstellen und mit Wert "19" versehen
-> Dummy "TScanBadStep" erstellen und mit Wert "-1" versehen
(-1 steht dabei für veringern, 1 für erhöhen der Temperatur)

Dazu gehört eine "at" die alle 15 Minuten läuft, mit dem Attr alignTime 0:00

+*00:15:00 {
if(Value("TScanBadStep") == 1)
{
my $IST=ReadingsVal("ThermostatBad", "desiredTemperature", 0);
my $SOLL=Value("TScanBadZiel");
if($IST <= $SOLL)
{
$SOLL=$IST+0.5;
fhem("set TScanBadZiel $SOLL; set TScanBadStep -1");
fhem("set ThermostatBad desiredTemperature $SOLL");
}
else
{
fhem("set TScanBadZiel $IST; set TScanBadStep -1");
}
}
else
{
if(Value("TScanBadStep") == -1)
{
my $IST=ReadingsVal("ThermostatBad", "desiredTemperature", 0);
my $SOLL=Value("TScanBadZiel");
if($IST >= $SOLL)
{
$SOLL=$IST-0.5;
fhem("set TScanBadZiel $SOLL; set TScanBadStep 1");
fhem("set ThermostatBad desiredTemperature $SOLL");
}
else
{
fhem("set TScanBadZiel $IST; set TScanBadStep 1");
}
}
}
}


Das Ergebnis:
Step = -1
Soll = 19
Ist = 19
-> Step wird auf 1 ; Ziel auf 18,5 und Thermostat auf 18,5 gesetzt

Step=1
Soll= 18,5
Ist = 18,5
-> Step wird auf -1; Ziel auf 19 und Thermostat auf 19 gesetzt

Nehmen wir nun an, zwischenzeitlich gehen die Credits aus, oder die Temperatur wird absichtlich geändert:

Step = -1
Soll = 19
Ist = 12 (geändert druch Nutzer [oder 18,5 da letzter Set Befehel nicht erfolgreich])
Die If erfüllt nicht die Bedingung Ist >= Soll --> Step wird auf 1 gesetzt

Step = 1
Soll = 19
Ist = 21
Die If erfüllt ihre Bedingung nicht -> Step wird auf -1 gesetzt

---------
Vorteile:
- Es wird immer die momentan eingestellte Temperatur zur vollen viertel Stunde berücksichtig.
- Ein Übersteuern (endloses Erhöhen oder Veringern) der Soll Temperatur wird unterbunden.
- Es ergeben sich für jede Viertel Stunde je ein Messwert.

Nachteile:
- Temperaturänderungen kurz vor Viertel werden ignoriert/überschrieben.
(Liegt in der Eigenart der Thermostate begründet -> max 3 Minuten bis Thermostat seinen Wert an Fhem gesendet hat.)
- Die WindowsOpen Temperatur muss auf 5°C gesetzt sein.
  (Also kein OFF möglich.)

Soweit so "gut", vieleicht hilft es ja dem einen oder anderen ;-)

Eine schöne Weihnachtszeit euch allen,
Kharim
Titel: Antw:Temperaturscanner "Quick and Dirty"
Beitrag von: Gigafix am 20 Dezember 2015, 17:17:14
Hallo Kharim

Vielen Dank für den "Quick and Dirty"-Code. Ich musste am Ende noch eine }Klammer schließen, dann lief es auch.

Viele Grüße sendet
Gigafix
Titel: Antw:Temperaturscanner "Quick and Dirty"
Beitrag von: Kharim am 21 Dezember 2015, 06:58:00
Sorry, habs korrigiert.

(Ist beim Kopieren verloren gegangen, da bei mir noch weitere Thermostate darunter folgen...)
Titel: Antw:Temperaturscanner "Quick and Dirty"
Beitrag von: ghostrider am 09 April 2020, 16:38:59
Hallo zusammen blöde Frage aber wie kann ich diesen Code in meinen Fhem überhaupt integrieren? Ich komme leider noch nicht so gut mit der Thematik klar momentan habe ich den maxscanner von John am Laufen dieser hat aber den unangenehmen Nebeneffekt dass selbst wenn ich das Thermostat auf Manuel Stelle und eine Temperatur manuell einstellen automatisch beim nächsten Scan in das Wochenprogramm wechselt was ich nicht möchte für eure Tipps wäre ich dankbar viele Grüße
Titel: Antw:Temperaturscanner "Quick and Dirty"
Beitrag von: Kharim am 09 April 2020, 17:50:20
Hallo ghostrider,

wie du (vielleicht schon) der ersten Zeile entnehmen kannst, handelt es sich hierbei um eine "at" : https://wiki.fhem.de/wiki/At
Du kannst dir eine "leere" at definieren und den Code inkl. Anpassung einkopieren.

Grüße und schöne Ostern,
Kharim
Titel: Antw:Temperaturscanner "Quick and Dirty"
Beitrag von: Wzut am 10 April 2020, 08:02:09
Oh je da hat aber jemand einen Oldtimer ausgegraben.... dem sieht man schon sein Alter an und sollte vllt. mal etwas "entstaubt" werden.
D.h. die beiden Dummy brauch man nicht, die zusätzlichen Werte kann man auch gleich ins Device mittels userReadings packen.
Value("xy") würde ich heute niemand mehr empfehlen.
fhem() fhem() Zeilen kann man zusammenpacken genau wie set set
Eigentlich macht man für so etwas eher ein Stückchen Code für die 99_myUtils und übergibt im at nur den Namen, dann ist es auch einfacher und übersichtlicher wenn man mehr als ein HT so steuern möchte.
   
Titel: Antw:Temperaturscanner "Quick and Dirty"
Beitrag von: ghostrider am 27 Oktober 2020, 17:40:38
Scheinbar bin ich zu doof dazu.

Ich bekomme sowas :
Unknown command +*00:15:00, try help.
Unknown command my, try help.
Unknown command if($IST, try help.
Unknown command fhem("set, try help.
Please define TScanBadStep first
Unknown command fhem("set, try help.
Unknown command }, try help.
Please define TScanBadStep first
Unknown command }, try help.
Unknown command my, try help.
Unknown command if($IST, try help.
Unknown command fhem("set, try help.
Please define TScanBadStep first
Unknown command fhem("set, try help.
Unknown command }, try help.
Please define TScanBadStep first
Unknown command }, try help.
Titel: Antw:Temperaturscanner "Quick and Dirty"
Beitrag von: MadMax-FHEM am 27 Oktober 2020, 17:49:32
Da würde ich empfehlen: fhem Einsteiger-Doku etc.!

Das was du versuchst einzufügen ist ein "at".

Also mal so:


define atName +*00:15:00 {}


Das ist ein "nacktes" at, welches alle 15min aufgerufen wird und dann eben das was "hinten dran steht" (in dem Fall Perl-Aufrufe) ausführt.

https://wiki.fhem.de/wiki/At

Dann auf DEF und den Rest einfügen, das ist dann das was ausgeführt wird.
Die zuerst mit angegebenen geschweiften Klammern lassen!

https://wiki.fhem.de/wiki/Klammerebenen


if(Value("TScanBadStep") == 1)
{
my $IST=ReadingsVal("ThermostatBad", "desiredTemperature", 0);
my $SOLL=Value("TScanBadZiel");
if($IST <= $SOLL)
{
$SOLL=$IST+0.5;
fhem("set TScanBadZiel $SOLL; set TScanBadStep -1");
fhem("set ThermostatBad desiredTemperature $SOLL");
}
else
{
fhem("set TScanBadZiel $IST; set TScanBadStep -1");
}
}
else
{
if(Value("TScanBadStep") == -1)
{
my $IST=ReadingsVal("ThermostatBad", "desiredTemperature", 0);
my $SOLL=Value("TScanBadZiel");
if($IST >= $SOLL)
{
$SOLL=$IST-0.5;
fhem("set TScanBadZiel $SOLL; set TScanBadStep 1");
fhem("set ThermostatBad desiredTemperature $SOLL");
}
else
{
fhem("set TScanBadZiel $IST; set TScanBadStep 1");
}
}
}


ich hoffe ich habe durch das stückchenweise kopieren jetzt keine Klammer "vergessen" etc. ;)

UND: du musst natürlich die Devicenamen etc. innerhalb des Perl-Teils anpassen an deine Umgebung!

ABER: ich würde empfehlen erst mal etwas mit fhem klar zu kommen und v.a. auch mit Perl etwas "anfreunden"...

EDIT: Stimme Wzut zu, also bzgl. myUtils. Den Rest hab ich mir jetzt nicht angeschaut ;)  https://wiki.fhem.de/wiki/99_myUtils_anlegen Also im oben angelegten "nackten" at dann statt den ganzen Code nur noch die entsprechend angelegte Sub in myUtils aufrufen, also "define atName at +*00:15:00 {mySub()}"

Gruß, Joachim
Titel: Antw:Temperaturscanner "Quick and Dirty"
Beitrag von: Wzut am 27 Oktober 2020, 20:07:34
konnte dann doch nicht die Finger davon lassen ... anbei ein Vorschlag wie man es relativ flexibel in die 99_myUtils schreiben könnte.
(wobei ich kein Freund dieser Creditfresser bin)

sub Tscan {
  my @devices = split(',', shift);
    my $i = -1;
   
    foreach my $device (@devices) {
my $hash   = $defs{$device} // next;

next if (($hash->{devtype} < 1) || ($hash->{devtype} > 2));

my $IST  = ReadingsNum($device, 'desiredTemperature', '0');
$IST = $IST eq 'on' ? 30.5 : ($IST eq 'off' ? 4.5 :$IST);
next if (($IST < 5) || ($IST > 30));

        $i++;
my $SOLL = $hash->{'TScanZ'} // $IST;

if ($hash->{'TScanS'}) {
    $hash->{'TScanS'} = 0;

    if ($IST <= $SOLL) {
$SOLL = $IST+.5;
$hash->{'TScanZ'} = $SOLL;
        if (!$i) {
    CommandSet(undef, "$device desiredTemperature $SOLL");
}
        else {
    CommandDefMod(undef, 'at_Tscan_'.$device.' at +00:'.sprintf(%02d, $i).":00 set $device desiredTemperature $SOLL");
}
    }
    else { $hash->{'TScanZ'} = $IST; }
}
else {
    $hash->{'TScanS'} = 1;

    if ($IST >= $SOLL) {
$SOLL = $IST-.5;
$hash->{'TScanZ'} =  $SOLL;
if (!$i) {
    CommandSet(undef, "$device desiredTemperature $SOLL");
}
else {
    CommandDefMod(undef, 'at_Tscan_'.$device.' at +00:'.sprintf(%02d, $i).":00 set $device desiredTemperature $SOLL");
}
    }
    else { $hash->{'TScanZ'} = $IST; }
}
    }
    return;
}



das at kann dann so aussehen
define atName +*00:15:00 {Tscan('Mein_thermo')}
bzw. wenn mehr als ein HT benutzt werden soll diese als Kommata getrennt Liste übergeben.
define atName +*00:15:00 {Tscan('Thermo_Bad,Thermo_Kueche')}
Bei mehr als einem HT werden die folgenden um jeweils 1 Minute verzögert aufgerufen.
Titel: Antw:Temperaturscanner "Quick and Dirty"
Beitrag von: ghostrider am 28 Oktober 2020, 07:43:34
Hi, also ich habe das so erstellt:

define BueroTEMP at +*00:15:00 {}

das lässt sich jetzt anlegen.

Wenn ich es so schreibe define atName +*00:15:00 {} funktioniert es nicht wie in deinem Post weil das at fehlt !?

Wenn ich jetzt den AT öffne kann ich unter DEF  wo derzeit +*00:15:00 {} steht kann ich in die {} was eintragen.

Das würde ich dort einfügen if(Value("TScanBadStep") == 1)
{
my $IST=ReadingsVal("ThermostatBad", "desiredTemperature", 0);
my $SOLL=Value("TScanBadZiel");
if($IST <= $SOLL)
{
$SOLL=$IST+0.5;
fhem("set TScanBadZiel $SOLL; set TScanBadStep -1");
fhem("set ThermostatBad desiredTemperature $SOLL");
}
else
{
fhem("set TScanBadZiel $IST; set TScanBadStep -1");
}
}
else
{
if(Value("TScanBadStep") == -1)
{
my $IST=ReadingsVal("ThermostatBad", "desiredTemperature", 0);
my $SOLL=Value("TScanBadZiel");
if($IST >= $SOLL)
{
$SOLL=$IST-0.5;
fhem("set TScanBadZiel $SOLL; set TScanBadStep 1");
fhem("set ThermostatBad desiredTemperature $SOLL");
}
else
{
fhem("set TScanBadZiel $IST; set TScanBadStep 1");
}
}
}



Ich muss mein Thermostat anpassen in diesem Fall heißt das Thermostat MAX_0adb5b

Also dann so : Welche Werte müsste ich noch ändern ??

if(Value("TScanBadStep") == 1)
{
my $IST=ReadingsVal("MAX_0adb5b", "desiredTemperature", 0);
my $SOLL=Value("TScanBadZiel");
if($IST <= $SOLL)
{
$SOLL=$IST+0.5;
fhem("set TScanBadZiel $SOLL; set TScanBadStep -1");
fhem("set MAX_0adb5b desiredTemperature $SOLL");
}
else
{
fhem("set TScanBadZiel $IST; set TScanBadStep -1");
}
}
else
{
if(Value("TScanBadStep") == -1)
{
my $IST=ReadingsVal("MAX_0adb5b", "desiredTemperature", 0);
my $SOLL=Value("TScanBadZiel");
if($IST >= $SOLL)
{
$SOLL=$IST-0.5;
fhem("set TScanBadZiel $SOLL; set TScanBadStep 1");
fhem("set MAX_0adb5b desiredTemperature $SOLL");
}
else
{
fhem("set TScanBadZiel $IST; set TScanBadStep 1");
}
}
}






Zitat von: MadMax-FHEM am 27 Oktober 2020, 17:49:32
Da würde ich empfehlen: fhem Einsteiger-Doku etc.!

Das was du versuchst einzufügen ist ein "at".

Also mal so:


define atName +*00:15:00 {}


Das ist ein "nacktes" at, welches alle 15min aufgerufen wird und dann eben das was "hinten dran steht" (in dem Fall Perl-Aufrufe) ausführt.

https://wiki.fhem.de/wiki/At

Dann auf DEF und den Rest einfügen, das ist dann das was ausgeführt wird.
Die zuerst mit angegebenen geschweiften Klammern lassen!

https://wiki.fhem.de/wiki/Klammerebenen


if(Value("TScanBadStep") == 1)
{
my $IST=ReadingsVal("ThermostatBad", "desiredTemperature", 0);
my $SOLL=Value("TScanBadZiel");
if($IST <= $SOLL)
{
$SOLL=$IST+0.5;
fhem("set TScanBadZiel $SOLL; set TScanBadStep -1");
fhem("set ThermostatBad desiredTemperature $SOLL");
}
else
{
fhem("set TScanBadZiel $IST; set TScanBadStep -1");
}
}
else
{
if(Value("TScanBadStep") == -1)
{
my $IST=ReadingsVal("ThermostatBad", "desiredTemperature", 0);
my $SOLL=Value("TScanBadZiel");
if($IST >= $SOLL)
{
$SOLL=$IST-0.5;
fhem("set TScanBadZiel $SOLL; set TScanBadStep 1");
fhem("set ThermostatBad desiredTemperature $SOLL");
}
else
{
fhem("set TScanBadZiel $IST; set TScanBadStep 1");
}
}
}


ich hoffe ich habe durch das stückchenweise kopieren jetzt keine Klammer "vergessen" etc. ;)

UND: du musst natürlich die Devicenamen etc. innerhalb des Perl-Teils anpassen an deine Umgebung!

ABER: ich würde empfehlen erst mal etwas mit fhem klar zu kommen und v.a. auch mit Perl etwas "anfreunden"...

EDIT: Stimme Wzut zu, also bzgl. myUtils. Den Rest hab ich mir jetzt nicht angeschaut ;)  https://wiki.fhem.de/wiki/99_myUtils_anlegen Also im oben angelegten "nackten" at dann statt den ganzen Code nur noch die entsprechend angelegte Sub in myUtils aufrufen, also "define atName at +*00:15:00 {mySub()}"

Gruß, Joachim
Titel: Antw:Temperaturscanner "Quick and Dirty"
Beitrag von: ghostrider am 28 Oktober 2020, 07:48:20
Ich muss auch diese Werte definieren ?

-> Dummy "TScanBadZiel"
-> Dummy "TScanBadStep"

???
Titel: Antw:Temperaturscanner "Quick and Dirty"
Beitrag von: ghostrider am 28 Oktober 2020, 08:00:35
Hi,

ich habe jetzt auch parallel die  99_myUtils  erstellt .
Wenn ich die define atName +*00:15:00 {Tscan('Mein_thermo')} erstelle bekomme ich Unknown module +*00:15:00
es fehlt hier auch das at hinter dem "atname"  nehme ich an?

Zitat von: Wzut am 27 Oktober 2020, 20:07:34
konnte dann doch nicht die Finger davon lassen ... anbei ein Vorschlag wie man es relativ flexibel in die 99_myUtils schreiben könnte.
(wobei ich kein Freund dieser Creditfresser bin)

sub Tscan {

    my $device = shift;
    my $hash   = $defs{$device} // return; # das Device gibt es gar nicht

    return if (($hash->{devtype} < 1) || ($hash->{devtype} > 2)); # das Device ist kein MAX HT

    my $IST  = ReadingsVal($device, 'desiredTemperature', '0'); # kein ReadingsNum verwenden !
    return if ($IST ne $IST+0); # die desiredTemperature liegt nicht zwischen 5 ... 30 Grad , vllt on / off ?

    my $SOLL = $hash->{'TScanZ'} // $IST; # beim ersten Aufruf einen gültigen Wert vorgeben

    if ($hash->{'TScanS'}) {
$hash->{'TScanS'} = 0;

if ($IST <= $SOLL) {
    $SOLL = $IST + .5;
    $hash->{'TScanZ'} = $SOLL;
    return CommandSet(undef, "$device desiredTemperature $SOLL");
        }
        else { $hash->{'TScanZ'} = $IST; }
    }
    else {
$hash->{'TScanS'} = 1;

if ($IST >= $SOLL) {
    $SOLL = $IST - .5;
    $hash->{'TScanZ'} =  $SOLL;
    return CommandSet(undef, "$device desiredTemperature $SOLL");
}
else { $hash->{'TScanZ'} = $IST; }
    }
    return;
}


das at kann dann so aussehen
define atName +*00:15:00 {Tscan('Mein_thermo')}

Titel: Antw:Temperaturscanner "Quick and Dirty"
Beitrag von: Wzut am 28 Oktober 2020, 08:06:40
Zitat von: ghostrider am 28 Oktober 2020, 07:48:20
Ich muss auch diese Werte definieren ?

-> Dummy "TScanBadZiel"
-> Dummy "TScanBadStep"

???
Bei meiner 99_myUtils Lösnung nicht, aber der anderen schon.
Und ja ich war da gestern Abend zu schnell und habe das at im define unterschlagen :
define atName at +*00:15:00 {Tscan('Mein_thermo')}
Titel: Antw:Temperaturscanner "Quick and Dirty"
Beitrag von: ghostrider am 28 Oktober 2020, 08:13:47
Ok,
habe ich so drinne aber:

Wo muss ich was anpassen damit er auch das Gewünschte Thermostat abfragt ?
Titel: Antw:Temperaturscanner "Quick and Dirty"
Beitrag von: Wzut am 28 Oktober 2020, 10:07:03
define was_weiss_ich at +*00:15:00 {Tscan('MAX_0adb5b')}
Titel: Antw:Temperaturscanner "Quick and Dirty"
Beitrag von: ghostrider am 28 Oktober 2020, 11:49:15
define was_weiss_ich at +*00:15:00 {Tscan('MAX_0adb5b')}

habe ich jetzt umgesetzt:

define TempScanBuero at +*00:15:00 {Tscan('MAX_0adb5b')}

Wollte es anschließen über
TempScanBuero execNow testen

passiert aber nicht´s zumindest weiß ich nicht wo man es finden soll
Titel: Antw:Temperaturscanner "Quick and Dirty"
Beitrag von: Wzut am 28 Oktober 2020, 12:47:30
vermutlich bei
return if ($IST ne $IST+0); # die desiredTemperature liegt nicht zwischen 5 ... 30 Grad , vllt on / off ?

denn wenn desiredTemperatur 20.0 ist ergibt $IST+0 = 20 und für  einen Stringvergleich ist 20.0 nunmal ungleich 20
bei 19.5 bzw allen .5 Temperaturen passt das. Ergo erstmal die ganze Zeile rauswerfen.
Das gibt dann aber Mecker bei on/off , daher dann doch mit ReadingsNum arbeiten und den Wert checken :

my $IST  = ReadingsNum($device, 'desiredTemperature', '0');
return if ($IST < 5);
Titel: Antw:Temperaturscanner "Quick and Dirty"
Beitrag von: ghostrider am 29 Oktober 2020, 07:00:51
HI,

also die 99_myUtils.pm. sieht so aus.

Ich habe nur Temperaturen zwischen 15 und 21 Grad je nach Thermostat
Speziell bei dem


##############################################
# $Id: myUtilsTemplate.pm 21509 2020-03-25 11:20:51Z rudolfkoenig $
#
# Save this file as 99_myUtils.pm, and create your own functions in the new
# file. They are then available in every Perl expression.

package main;

use strict;
use warnings;

sub
myUtils_Initialize($$)
{
  my ($hash) = @_;
}

# Enter you functions below _this_ line.


1;
sub Tscan {

    my $device = shift;
    my $hash   = $defs{$device} // return; # das Device gibt es gar nicht

    return if (($hash->{devtype} < 1) || ($hash->{devtype} > 2)); # das Device ist kein MAX HT

    my $IST  = ReadingsVal($device, 'desiredTemperature', '0'); # kein ReadingsNum verwenden !
    return if ($IST ne $IST+0); # die desiredTemperature liegt nicht zwischen 5 ... 30 Grad , vllt on / off ?

    my $SOLL = $hash->{'TScanZ'} // $IST; # beim ersten Aufruf einen gültigen Wert vorgeben

    if ($hash->{'TScanS'}) {
$hash->{'TScanS'} = 0;

if ($IST <= $SOLL) {
    $SOLL = $IST + .5;
    $hash->{'TScanZ'} = $SOLL;
    return CommandSet(undef, "$device desiredTemperature $SOLL");
        }
        else { $hash->{'TScanZ'} = $IST; }
    }
    else {
$hash->{'TScanS'} = 1;

if ($IST >= $SOLL) {
    $SOLL = $IST - .5;
    $hash->{'TScanZ'} =  $SOLL;
    return CommandSet(undef, "$device desiredTemperature $SOLL");
}
else { $hash->{'TScanZ'} = $IST; }
    }
    return;
}



RSSI

-33.5

2020-10-29 06:00:31
TimeInformationHour

4

2020-01-05 14:45:14
battery

ok

2020-10-29 06:00:31
batteryState

ok

2020-10-29 06:00:31
boostDuration

25

2020-01-05 15:53:25
boostValveposition

80

2020-01-05 15:53:25
comfortTemperature

21.0

2020-01-05 15:53:25
decalcification

Sat 12:00

2020-01-05 15:53:25
desiredTemperature

21.0

2020-10-29 06:00:31
deviation

-5.2

2020-10-29 06:00:31
ecoTemperature

17.0

2020-01-05 15:53:25
firmware

1.8

2020-01-05 15:53:25
gateway

1

2020-10-29 06:00:31
groupid

0

2020-01-05 15:53:25
lastTimeSync

2020-10-29 04:36:58

2020-10-29 04:36:58
lastcmd

desiredTemperature auto/boost

2020-10-27 13:23:57
maxValveSetting

100

2020-01-05 15:53:25
maximumTemperature

on

2020-01-05 15:53:25
measurementOffset

0.0

2020-01-05 15:53:25
minimumTemperature

off

2020-01-05 15:53:25
mode

auto

2020-10-29 06:00:31
msgcnt

84

2020-10-29 04:36:58
panel

unlocked

2020-10-29 06:00:31
peerIDs

000000

2020-10-29 06:00:31
peerList

Broadcast

2020-10-29 06:00:31
rferror

0

2020-10-29 06:00:31
state

21.0&deg;C

2020-10-29 06:00:31
temperature

15.8

2020-10-29 06:00:31
testresult

255

2020-01-05 15:53:25
valveOffset

0

2020-01-05 15:53:25
valveposition

89

2020-10-29 06:00:31
weekprofile-0-Sat-temp

14.0 °C / 14.0 °C

2020-10-26 22:32:31
weekprofile-0-Sat-time

00:00-22:00 / 22:00-24:00

2020-10-26 22:32:31
weekprofile-1-Sun-temp

14.0 °C / 14.0 °C

2020-10-26 22:32:31
weekprofile-1-Sun-time

00:00-22:00 / 22:00-24:00

2020-10-26 22:32:31
weekprofile-2-Mon-temp

14.0 °C / 21.0 °C / 14.0 °C

2020-10-26 22:32:31
weekprofile-2-Mon-time

00:00-06:00 / 06:00-14:00 / 14:00-24:00

2020-10-26 22:32:31
weekprofile-3-Tue-temp

14.0 °C / 21.0 °C / 14.0 °C

2020-10-26 22:32:31
weekprofile-3-Tue-time

00:00-06:00 / 06:00-14:00 / 14:00-24:00

2020-10-26 22:32:31
weekprofile-4-Wed-temp

14.0 °C / 21.0 °C / 14.0 °C

2020-10-26 22:32:31
weekprofile-4-Wed-time

00:00-06:00 / 06:00-14:00 / 14:00-24:00

2020-10-26 22:32:31
weekprofile-5-Thu-temp

14.0 °C / 21.0 °C / 14.0 °C

2020-10-26 22:32:31
weekprofile-5-Thu-time

00:00-06:00 / 06:00-14:00 / 14:00-24:00

2020-10-26 22:32:31
weekprofile-6-Fri-temp

14.0 °C / 21.0 °C / 14.0 °C

2020-10-26 22:32:31
weekprofile-6-Fri-time

00:00-06:00 / 06:00-12:00 / 12:00-24:00

2020-10-26 22:32:31
windowOpenDuration

15

2020-01-05 15:53:25
windowOpenTemperature

12.0
Titel: Antw:Temperaturscanner "Quick and Dirty"
Beitrag von: Wzut am 29 Oktober 2020, 07:10:33
1. tu uns allen bitte den Gefallen und verwende code Tags und nicht quote = Zitat . Ich war mal so frei dein Posting zu editieren damit es lesbar ist.

2. die einsamme 1; vor der sub Tscan gehört da nicht hin sondern ganz ans Ende

3. Lies doch bitte nochmal was ich  gestern um um 12:47:30 geschrieben habe, mit dem $IST+0 wird es nicht gehen

4. mit dem zweiten Block kann niemand etwas anfangen , bitte immer ein list vom Device posten.
Titel: Antw:Temperaturscanner "Quick and Dirty"
Beitrag von: ghostrider am 29 Oktober 2020, 09:13:44
So ich habe jetzt

return if ($IST ne $IST+0); # die desiredTemperature liegt nicht zwischen 5 ... 30 Grad , vllt on / off ?

entfernt

Dann um 09:10 ausgeführt jetzt erscheint:

2020-10-29_09:10:12 MAX_0adb5b lastcmd: set_desiredTemperature 20.5
2020-10-29_09:10:13 MAX_0adb5b valveposition: 89
2020-10-29_09:10:13 MAX_0adb5b 20.5°C
2020-10-29_09:10:13 MAX_0adb5b desiredTemperature: 20.5
2020-10-29_09:10:13 MAX_0adb5b RSSI: -33.5
2020-10-29_09:10:13 MAX_0adb5b battery: ok
2020-10-29_09:10:13 MAX_0adb5b batteryState: ok
2020-10-29_09:10:13 MAX_0adb5b rferror: 0
2020-10-29_09:10:13 MAX_0adb5b gateway: 1
2020-10-29_09:10:13 MAX_0adb5b mode: manual
2020-10-29_09:10:13 MAX_0adb5b panel: unlocked
2020-10-29_09:10:13 MAX_0adb5b lastcmd: desiredTemperature 20.5
2020-10-29_09:10:13 MAX_0adb5b 20.5°C
2020-10-29_09:10:31 MAX_0adb5b temperature: 19.6
2020-10-29_09:10:31 MAX_0adb5b deviation: -0.9
2020-10-29_09:10:31 MAX_0adb5b valveposition: 89
2020-10-29_09:10:31 MAX_0adb5b 20.5°C
2020-10-29_09:10:31 MAX_0adb5b desiredTemperature: 20.5
2020-10-29_09:10:31 MAX_0adb5b RSSI: -33.5
2020-10-29_09:10:31 MAX_0adb5b battery: ok
2020-10-29_09:10:31 MAX_0adb5b batteryState: ok
2020-10-29_09:10:31 MAX_0adb5b rferror: 0
2020-10-29_09:10:31 MAX_0adb5b gateway: 1
2020-10-29_09:10:31 MAX_0adb5b mode: manual
2020-10-29_09:10:31 MAX_0adb5b panel: unlocked
2020-10-29_09:10:31 MAX_0adb5b peerList: Broadcast
2020-10-29_09:10:31 MAX_0adb5b peerIDs: 000000


Er hat das Thermostat jetzt auf Manuell gewechselt und die Temp auf 20.5 von 21 gesenkt ?
Sehe ich das richtig?
Titel: Antw:Temperaturscanner "Quick and Dirty"
Beitrag von: ghostrider am 29 Oktober 2020, 10:34:16
Hi,

also jetzt hat er den Befehl mehrmals gesetzt es sieht so aus als würde er 0,5 erhöhen und 0,5 senken, bleibt aber auf Manuell anstelle Auto.

Wenn jetzt der nächste Schaltpunkt vom Wochenprogramm kommt z.B. 14 Grad würde er das schalten ?

Bzw. wird er dann wieder +0,5 /-0,5 schalten bis zum nächsten Programmwechsel?

Falls ich jetzt manuell in den Schaltvorgang eingreife und auf 24 hoch drehe würde er anschließen wieder in dem Bereich auf -0,5 /+0,5 stellen bis das nächste Wochenprogramm greift ?

Sofern ich jetzt KeepAuto aktivieren würde, bewegt er sich permanent im Programm Auto ?
Titel: Antw:Temperaturscanner "Quick and Dirty"
Beitrag von: Wzut am 29 Oktober 2020, 16:26:52
Zitat von: ghostrider am 29 Oktober 2020, 10:34:16
also jetzt hat er den Befehl mehrmals gesetzt es sieht so aus als würde er 0,5 erhöhen und 0,5 senken, bleibt aber auf Manuell anstelle Auto.
Tipp : Nochmal den ersten Post lesen, genau so hat der Erfinder sich das gedacht und für sich auch für gut befunden.
Titel: Antw:Temperaturscanner "Quick and Dirty"
Beitrag von: ghostrider am 29 Oktober 2020, 19:12:54
Hi ja habe ich gemacht leider ist es so daß das Wochenprogramm nun komplett übergangen wird das heißt die eingestellte Temperatur steht auf dauerbetrieb das Wochenprogramm funktioniert nicht mehr :(

Es muss doch möglich sein die Werte zu übermitteln ohne das Thermostat  seinen Modus verlässt und genauso weitermacht wie vorher.

Entweder auf Auto oder auf Manu
Titel: Antw:Temperaturscanner "Quick and Dirty"
Beitrag von: ghostrider am 09 November 2020, 08:02:56
ZitatHi ja habe ich gemacht leider ist es so daß das Wochenprogramm nun komplett übergangen wird das heißt die eingestellte Temperatur steht auf dauerbetrieb das Wochenprogramm funktioniert nicht mehr :(

Es muss doch möglich sein die Werte zu übermitteln ohne das Thermostat  seinen Modus verlässt und genauso weitermacht wie vorher.

Entweder auf Auto oder auf Manu


??
Titel: Antw:Temperaturscanner "Quick and Dirty"
Beitrag von: Wzut am 09 November 2020, 17:36:25
Nochmal : works as designed, wenn das nicht ist was du willst baue dir das keepAuto mit ein oder nutze den MAX_Scanner.
Es hat schon seinen Grund warum der um einiges umfangreicher ist und das Ding hier sich quick & dirty nennt.
Titel: Antw:Temperaturscanner "Quick and Dirty"
Beitrag von: ghostrider am 10 November 2020, 07:45:17
Wie regelst du das denn wenn du z.B. in der Urlaub fährst??

Wenn ich wegfahre sollen die Thermostate auf einem von mir festgelegten Wert stehen und nicht wieder mit dem normalen Wochenprogramm starten ?

Oder übersehe ich hier eine Funktion ?

Ich habe das immer so gemacht das ich auf Manuell gestellt habe und einen Wert z.B. 15 Grad eingestellt habe. Jetzt wird dieser ja gleich wieder überschrieben ?
Titel: Antw:Temperaturscanner "Quick and Dirty"
Beitrag von: Wzut am 10 November 2020, 16:52:53
Du widersprichst dich, erst magst du nicht das kein Automodus der Wochenprofile mehr läuft und nun das diese deine manuelle Urlaubs Soll Vorgabe überschreiben.
Sorry, aber nochmal : ich bin ein Gegner diese Credits fressenden "Scanner" und unterstütze sie nicht.
Meine Heizung läuft in den bewohnten Räumen 365 Tage im Jahr im Auto Modus und das z.Z. unbewohnten Dachgeschoss hat das ganze Jahr über eine fixe Temperatur auf manual.