Temperaturscanner "Quick and Dirty"

Begonnen von Kharim, 20 Dezember 2015, 09:10:47

Vorheriges Thema - Nächstes Thema

ghostrider

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

Wzut

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);
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

ghostrider

#17
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

Wzut

#18
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.
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

ghostrider

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?

ghostrider

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 ?

Wzut

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.
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

ghostrider

#22
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

ghostrider

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


??

Wzut

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.
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

ghostrider

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 ?

Wzut

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.
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher