[gelöst] ReadingsVal: Dezimal Wert in BitString darstellen ?

Begonnen von ak323, 16 Januar 2017, 22:20:46

Vorheriges Thema - Nächstes Thema

betateilchen

Zitat von: ak323 am 22 Januar 2022, 13:07:30
ReadingsNum($name,0,0)

Das funktioniert so nicht.
Da wo Du die fette Null hast, muss der Name eines readings stehen, kein absoluter Wert.
Da kein reading mit dem Namen "0" gefunden wird, wird der defaultwert (dritter Parameter) zurückgegeben.
Das funktioniert also eher "zufällig" so, wie Du es möchtest.

Wenn Du an der Stelle mit einem absoluten Wert arbeiten willst, kannst Du einfach den absoluten Wert hinschreiben anstatt einen Funktionsaufruf.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

ak323

#16
Danke, wieder was dazu gelernt.
Ott0123's Definition funktioniert und hat mir weiter geholfen ...

Jetzt muß ich nur noch ein Readingsproxy für die einzelxx Bits definiert bekommen .. dann kann ich mir den Status jeder geschalteten Komponente anzeigen ...
Aber auch hier habe ich so meine Probleme ..  8)
RaspberryPi 2 im 19" Rack mit 16x2 i2c LCD, FHEM, diverse HomeMatic, 1-Wire (8x DS18B20, 3x DS2408, 2x DS2413, 5x DS2401, DS2423 ATTiny) über DS9490R#, Waterkotte Ai1QE (WWPR) Wärmepumpe über Modbus, WH1080 über Signalduino, 433MHz Funksteckdosen, WiFi RGBWW via Tasmota, ...

betateilchen

Zitat von: Otto123 am 22 Januar 2022, 14:07:33
Ich habe es mal zu Fuß in 16 Readings verpackt. Kann man sicher besser machen.

ich weiß nicht, ob es 'besser' ist, aber auf jeden Fall performanter, da viel weniger Funktionsaufrufe von ReadingsNum() und viel weniger Texte ("on","off")


attr Waermepumpe userReadings AusgangBIN:Ausgang.* {$data{v}= ReadingsNum($name,'Ausgang',0);;$data{0}='off';;$data{1}='on';;sprintf("%016b",$data{v});;}, \
einzel00 {$data{$data{v} >>  0 & 1}},\
einzel01 {$data{$data{v} >>  1 & 1}},\
einzel02 {$data{$data{v} >>  2 & 1}},\
einzel03 {$data{$data{v} >>  3 & 1}},\
einzel04 {$data{$data{v} >>  4 & 1}},\
einzel05 {$data{$data{v} >>  5 & 1}},\
einzel06 {$data{$data{v} >>  6 & 1}},\
einzel07 {$data{$data{v} >>  7 & 1}},\
einzel08 {$data{$data{v} >>  8 & 1}},\
einzel09 {$data{$data{v} >>  9 & 1}},\
einzel10 {$data{$data{v} >> 10 & 1}},\
einzel11 {$data{$data{v} >> 11 & 1}},\
einzel12 {$data{$data{v} >> 12 & 1}},\
einzel13 {$data{$data{v} >> 13 & 1}},\
einzel14 {$data{$data{v} >> 14 & 1}},\
einzel15 {$data{$data{v} >> 15 & 1}}
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

ak323

#18
Danke betateilchen, Dein Ansatz funktioniert auch !

Wenn Ihr mir jetzt noch einen Tipp gebt, wie ich den Status der Einzelbits jeweils angezeigt bekomme, dann seid Ihr meine Helden (beide !)

define WpumpeSA00 readingsProxy Waermepumpe:einzel00
attr WpumpeSA00 alias Quellenpumpe2
attr WpumpeSA00 devStateIcon on:sani_buffer_temp_all@orange off:sani_buffer_temp_all
attr WpumpeSA00 event-on-change-reading .*
attr WpumpeSA00 group Wärmepumpe
attr WpumpeSA00 room TEST
attr WpumpeSA00 stateFormat state
attr WpumpeSA00 valueFn {($VALUE == 1)?"on":"off"}


... funktioniert leider nicht ... / verzweifel ..
RaspberryPi 2 im 19" Rack mit 16x2 i2c LCD, FHEM, diverse HomeMatic, 1-Wire (8x DS18B20, 3x DS2408, 2x DS2413, 5x DS2401, DS2423 ATTiny) über DS9490R#, Waterkotte Ai1QE (WWPR) Wärmepumpe über Modbus, WH1080 über Signalduino, 433MHz Funksteckdosen, WiFi RGBWW via Tasmota, ...

Otto123

Zitat von: betateilchen am 22 Januar 2022, 18:17:23
ich weiß nicht, ob es 'besser' ist, aber auf jeden Fall performanter, da viel weniger Funktionsaufrufe von ReadingsNum() und viel weniger Texte ("on","off")
Danke für so ein Beispiel. Hab ich es richtig verstanden?
%data ist ein Hash der im userReadings (überall in FHEM?) zur Verfügung steht und den ich (der User - # Hash for user data) befüllen kann. Es ist so eine Art "grüne Variable" die immer recycled wird?
Du füllst drei key/value Pärchen und verwendest diese zur weiteren Abfrage?

So ein Beispiel habe ich schon lange mal gesucht :) 
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

betateilchen

Zitat von: ak323 am 22 Januar 2022, 18:39:27
Wenn Ihr mir jetzt noch einen Tipp gebt, wie ich den Status der Einzelbits jeweils angezeigt bekomme, dann seid Ihr meine Helden (beide !)

im ganzen Leben hab ich noch kein readingsProxy verwendet... extra für Dich...


defmod WpumpeSA00 readingsProxy Waermepumpe:einzel00
attr WpumpeSA00 devStateIcon on:10px-kreis-rot off:10px-kreis-gruen


funktioniert bei mir einwandfrei.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Zitat von: Otto123 am 22 Januar 2022, 18:56:22
%data ist ein Hash der im userReadings (überall in FHEM?) zur Verfügung steht

Überall in FHEM. Ein Blick in die fhem.pl macht schlau:

use vars qw(%data);             # Hash for user data

Zitat von: Otto123 am 22 Januar 2022, 18:56:22
Du füllst drei key/value Pärchen

Ich fülle drei Variablen, die 'zufällig' in einem hash liegen und über diesen angesprochen werden.

Wenn man es ganz korrekt machen möchte, würde man die drei Variablen nach der Verarbeitung wieder aus dem hash löschen.
Aber zugunsten der Übersichtlichkeit habe ich das weggelassen.

Zitat von: Otto123 am 22 Januar 2022, 18:56:22
So ein Beispiel habe ich schon lange mal gesucht :) 

Was ist denn daran so besonders? Das sind doch absolute FHEM basics.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Otto123

Zitat von: betateilchen am 22 Januar 2022, 19:03:54
Was ist denn daran so besonders? Das sind doch absolute FHEM basics.
Für Dich Du alter 🦊 ;)
Kurz und gut: der %data Hash und das ich ihn verwenden darf war mir neu :) hab oft im userReadings alles doppelt und dreifach eingelesen.
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

betateilchen

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

ak323

#24
Danke Otto123 und betateilchen !

Ihr habt mir sehr geholfen ... und selber auch noch was gelernt !  8)

Absolut nett von EUCH !
VG ak323
RaspberryPi 2 im 19" Rack mit 16x2 i2c LCD, FHEM, diverse HomeMatic, 1-Wire (8x DS18B20, 3x DS2408, 2x DS2413, 5x DS2401, DS2423 ATTiny) über DS9490R#, Waterkotte Ai1QE (WWPR) Wärmepumpe über Modbus, WH1080 über Signalduino, 433MHz Funksteckdosen, WiFi RGBWW via Tasmota, ...