Batteriestand prozentual statt ok/bad.

Begonnen von moemoe, 26 September 2014, 12:28:14

Vorheriges Thema - Nächstes Thema

mfeske

Hallo zusammen,

der Wiki Artikel, hat das sogar für einen Newbi verständlich gemacht, auch wenn ich die Details nicht verstehe :-(

Wäre es sehr kompliziert das ganze auch für Max Stellantriebe zu nutzen? Ich vermute allerdings das diese nicht so komfortabel den Batteriestand übersenden ? Ich habe auch noch keine Möglichkeit gefunden ein lock zu setzen :-( Vielleicht sollte ich doch von MAX auf HM umsteigen?

Gruß
Micha
Hardware:
1 x Raspberry Pi Mod. B 512 MB
eq-3 2 x MAX! eTRV Heizungssteller, 1 x MAX! Fensterkontakt, 1 x MAX! Cube - LAN Gateway (ausser Betrieb)
Intertechno 1x ITZ-500, 3x ITT-1500, 9x ITR-1500, 3 x ITDL-1000, 2 x ITL-500
1 x CC1101-USB-Lite 433MHz (CUL433)  V3 1 x CC1101-USB-Lite 868MHz (CUL868)

RoBra81

Hallo,

ich habe mal versucht, das nachzubauen und bekomme es für Ventilstellungen unter 10% einfach nicht hin. Sobald ich für diesen Fall eine 0 zurückgebe, steht der vom Ventil gelieferte Wert drin. Gebe ich testweise für diesen Fall einen String "slkdlaskj" zurück, so wird dieser korrekt dargestellt, aber mit der 0 klappt's irgendwie nicht :-( (War das verständlich?)

Ronny

stromer-12

FHEM (SVN) auf RPi1B mit HMser | ESPLink
FHEM (SVN) virtuell mit HMLAN | HMUSB | CUL

hexenmeister

Zitat von: mfeske am 01 Januar 2015, 21:14:15
Wäre es sehr kompliziert das ganze auch für Max Stellantriebe zu nutzen?
Vemutlich nicht (evtl. mit Einschränkungen), ich habe jedoch keine Max und kenne die Dinger nicht. Kann daher keinen Vorschlag machen.

Grüße,

Alexander
Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy

hexenmeister

Zitat von: RoBra81 am 01 Januar 2015, 23:18:38
ich habe mal versucht, das nachzubauen und bekomme es für Ventilstellungen unter 10% einfach nicht hin.

Kann ich nachstellen... Ist ja lustig, scheinbar ein Bux im ReadingsGroup. Verstehe nicht wirklich, was da passieren kann.

Also, wenn der Wert aus dem Aktor z.B. 7 ist (also kleiner 10 aber größer 0), dann funktioniert valueFormat {$VALUE=1} wunderbar und setzt brav 1. Ein {$VALUE=0} funktioniert dagegen nicht. Daher klappt meine Rundung (int($VALUE/10)*10) auch nicht und somit auch nicht die Icon-Zuordnung.

Andre, hast Du eine Idee?

Grüße,

Alexander
Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy

stromer-12

FHEM (SVN) auf RPi1B mit HMser | ESPLink
FHEM (SVN) virtuell mit HMLAN | HMUSB | CUL

hexenmeister

Bei mir auch, aber nicht bei 1 bis 9.
Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy

Saar1974

#52
Wegen der Ventilstellung von 1-9 habe ich mir mit $VALUE = int(($VALUE+10)/10)*10 geholfen.
Weil ich 0% und 100% explizit (also als separtes Icon) angezeigt bekommen möchte, brauche ich insgesamt 11 unterschiedliche Icons.
Für 90-99%: Ventilstellung benutze ich 'ValvePosition.100' => 'sani_heating_level_100@E50005'
und für 100% Ventilstellung: 'ValvePosition.110' => 'sani_heating_level_100@ff0006' 

Den Code von hexenmeister (Herzlichen Dank dafür!!!) habe ich etwas modifiziert, damit automatisch meine Heizkörperthermostate HM-CC-RT-DN als auch teilweise vorhandenen Wandthermostate HM-TC-IT-WM-W-EU dargestellt werden.
Nun suche ich noch nach einer Möglichkeit, dass bei den Räumen, in denen zusätzlich ein Wandthermostat vorhanden ist, bei den zugehörigen Heizkörperthermostate kein Auswahldialog für <Soll neu> erscheint (siehe Kreise im Screenshot). Ich habe schon einiges ausprobiert, aber leider nicht mal annäherungsweise Erfolge erzielt.

Hat jemand vielleicht eine Idee? Danke!

define heatingInfo readingsGroup <Ferienwohnung>,<Ist>,<Soll>,<Soll neu>,<Ventil/RH>,<Modus>,<Lock>,<Batterie>,<Kommando>,<> \
(CUL_HM_|)HM_(CC_RT_DN_......_Clima|TC_IT_WM_W_EU_......_Climate):measured-temp,desired-temp,<sollsetz>,humidity,ValvePosition,controlMode,R-btnLock@{rg($DEVICE."§device")},batteryLevel@{rg($DEVICE."§device")},state@{rg($DEVICE."§device")},<%getConfig> \
<>,<>,<>,<>,<>,<>,<>,<>
attr heatingInfo cellStyle { "r:1"=>'style="font-weight:bold;;font-size:16px;;color:yellow"',"c:0"=>'style="font-weight:bold"',"c:1"=>'style="font-weight:bold"'}
attr heatingInfo commands {'controlMode' => 'trigger ntfy_rg $DEVICE controlMode', 'R-btnLock' => 'trigger ntfy_rg $DEVICE R-btnLock','heatingInfo.getConfig' => 'set $DEVICE getConfig','heatingInfo.sollsetz'=>'desired-temp:5.0,5.5,6.0,6.5,7.0,7.5,8.0,8.5,9.0,9.5,10.0,10.5,11.0,11.5,12.0,12.5,13.0,13.5,14.0,15.0,15.5,16.0,16.5,17.0,17.5,18.0,18.5,19.0,19.5,20.0,20.5,21.0,21.5,22.0,22.5,23.0,23.5,24.0,24.5,25.0,25.5,26.0,26.5,27.0,27.5,28.0,28.5,29.0,29.5,30.0'}
attr heatingInfo mapping { 'desired-temp' => ''}
attr heatingInfo room Ferienwohnung
attr heatingInfo sortDevices 1
attr heatingInfo valueFormat {if($READING eq "ValvePosition" && $VALUE ne "0"){$VALUE = int(($VALUE+10)/10)*10}elsif($READING eq "batteryLevel"){if($VALUE>=3){$VALUE=100}elsif($VALUE>=2.7){$VALUE=75}elsif($VALUE>=2.5){$VALUE=50}elsif($VALUE>=2.2){$VALUE=25}else{$VALUE=0}}}
attr heatingInfo valueIcon {'controlMode.manual' => 'sani_heating_manual@795CFF', 'controlMode.auto' => 'sani_heating_automatic@FFC13A', 'controlMode.boost' => 'sani_heating_boost@FB0C02', 'humidity'=>'humidity@6FD9FB', 'R-btnLock.on'=>'secur_locked@F7301D', 'R-btnLock.off'=>'secur_open@0CFB0C', 'ValvePosition.0' => 'sani_heating_level_0@002AE0', 'ValvePosition.10' => 'sani_heating_level_10@F8D53D', 'ValvePosition.20' => 'sani_heating_level_20@FF9341','ValvePosition.30' => 'sani_heating_level_30@F17F3F','ValvePosition.40' => 'sani_heating_level_40@E46C3C','ValvePosition.50' => 'sani_heating_level_50@DE3B3A','ValvePosition.60' => 'sani_heating_level_60@A30D2D','ValvePosition.70' => 'sani_heating_level_70@B40A23','ValvePosition.80' => 'sani_heating_level_80@C40619','ValvePosition.90' => 'sani_heating_level_90@D4030F','ValvePosition.100' => 'sani_heating_level_100@E50005','ValvePosition.110' => 'sani_heating_level_100@ff0006','batteryLevel.100' => 'measure_battery_100@0CFB0C','batteryLevel.75' => 'measure_battery_75@42BC0A','batteryLevel.50' => 'measure_battery_50@F5FF10','batteryLevel.25'=>'measure_battery_25@FB5909','batteryLevel.0'=>'measure_battery_0@E50005','controlMode.set_boost' => 'hourglass','controlMode.set_auto' => 'hourglass','controlMode.set_manual' => 'hourglass','R-btnLock.set_on' => 'hourglass','R-btnLock.set_off' => 'hourglass'}
attr heatingInfo valueStyle {if($READING eq "measured-temp"){my $t=$VALUE;;my $d=ReadingsVal($DEVICE,'desired-temp',0);;if($t-$d>=1){'style="color:rgb(251,63,11);;"'}elsif($t-$d<=-1){'style="color:rgb(79,58,251);;"'}else{'style="color:rgb(12,251,12);;"'}}}
attr heatingInfo valueSuffix {"desired-temp"=>" °C", "measured-temp"=>" °C","ValvePosition"=>" (".ReadingsVal($DEVICE,$READING,0)." %)","humidity"=>" ".ReadingsVal($DEVICE,$READING,0)." % RH","batteryLevel"=>" (".ReadingsVal($DEVICE,$READING,0)." V)"}


Grüße, Heiko

hexenmeister

Genau deswegen (und noch wegen der Reihenfolge) habe ich die Devices manuell angegeben.  :)
Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy

justme1968

schaut mal bitte ob sich bei den problematischen werten 1-9 ein leerzeichen im reading eingeschlichen hat.

ein device wird dann ausgeblendet wenn valueFormat undef zurück gibt. d.h. du kannst dein dein valueFormat so bauen das es bei den HM-CC-RT-DN schaut ob es einen HM-TC-IT-WM-W-EU im gleichen raum gibt und gibst dann undef zurück. wenn du das device trotzdem anzeigen und nur das eine reading auslassen möchtest gibts du z.b. &nbsp; zurück.

sortieren kannst du die devices dann per passendem sortDevices attribut.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

stromer-12

Man kann den Fehler auch provozieren in dem man aus

int($VALUE/10)*10

für Werte zwischen 11 und 19 macht

int(($VALUE-10)/10)*10

Es wird dan valueFormat nicht ausgewertet wenn $VALUE=0 als ergebnis raus kommt
FHEM (SVN) auf RPi1B mit HMser | ESPLink
FHEM (SVN) virtuell mit HMLAN | HMUSB | CUL

stromer-12

Ich habe jetzt erstmal

$VALUE = int($VALUE/10)*10

gegen

$VALUE = sprintf("%d0",$VALUE/10)

ausgetauscht, dadurch wird von 0 bis 9 eine 00 zurückgegeben und die sani_heating_level_0.svg in sani_heating_level_00.svg umbenannt
FHEM (SVN) auf RPi1B mit HMser | ESPLink
FHEM (SVN) virtuell mit HMLAN | HMUSB | CUL

justme1968

ich hab es eben im readingGroup modul repariert.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Tobias

bekommt man diese tolle Anzeige mit den Icons mit Boardmitteln auch ohne Readingsgroup hin? Also Definition im Device (Hier MAX) selbst
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

justme1968

readingsGroup sind bordmittel :)

es geht nur mit readingGroup.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968