Ja
Füllstandsensor mit Druck- statt US-Sensor
Moderator: Co-Administratoren
Re: Füllstandsensor mit Druck- statt US-Sensor
Guten Abend,
Also alles gut soweit. Gottseidank kam mir dann mit letzter Kraft und ohne fremde Hilfe die Einsicht, dass ich mir (erstmals) die HMConfig_AskSinPPCustom.pm anschauen sollte. Und in der Tat: Dort wurde der Wert durch 100 geteilt, s. auskommentierte Zeilen:
Damit bekomme ich jetzt in fhem die korrekten Liter - und kann somit (versteht das durchaus als Drohung) dazu übergehen, das Modul weiter zu modifizieren. Bereits 2079, also lange vor der Fertigstellung des BER, könnte ich damit fertig sein...
Vielen Dank für Euren tollen Support & einen schönen Abend
Martin
Code: Alles auswählen
+Pressure (#1) Analogwert: 256
18:44:31.491 -> +Pressure (#1) Fuellstand in Prozent: 25.7033367156
18:44:31.491 -> +Pressure (#1) Fuellstand in Litern: 2161.3728027343
18:44:31.491 -> +Pressure (#1) Messung: 6.6828675270
18:44:31.491 -> +Pressure (#1) sens_val: 256
18:44:31.491 -> +Pressure (#1) ContentTotal: 8.4089193344
18:44:31.491 -> +Pressure (#1) Pressure: 2161
18:44:31.491 -> XXX 2161
<- 0E 0E 84 53 E90101 424242 00 C1 01 08 71 - 15953
ignore 0C 7C 84 70 36716C 000000 00 CA 2D - 15968
ignore 0D D8 A6 10 24E2F3 424242 06 01 C8 00 - 15980
ignore 0A D8 80 02 424242 24E2F3 00 - 15988
ignore 0C C3 84 70 3679E4 000000 00 BF 25 - 15998
ignore 0F 84 86 10 38E037 000000 0A 78 B7 0B 00 00 - 16027
ignore 0C 9F 86 5A 391C84 000000 78 B7 26 - 16091
ignore 0F 07 86 10 38EE12 000000 0A 78 CA 0C 00 00 - 16111
ignore 0F A3 86 10 38E057 000000 0A 50 86 0F 00 40 - 16146
ignore 0C 9F 84 70 391C84 000000 00 B7 26 - 16171
Code: Alles auswählen
my @unpacked = map{hex($_)} unpack("A2A4",$values);
# push @evtEt,[$chnHash,1,"pressure:".$unpacked[1]/100];
push @evtEt,[$chnHash,1,"pressure:".$unpacked[1]];
# push @evtEt,[$chnHash,1,"state:".$unpacked[1]/100];
push @evtEt,[$chnHash,1,"state:".$unpacked[1]];
Vielen Dank für Euren tollen Support & einen schönen Abend
Martin
Standort 1: FS20 + Homematic mit CUL und FHEM (immer aktuelle Ver.) auf Raspberry Pi
Standort 2: Homematic (Wired + einige Funkmodule) über CCU2 und PocketHome HD, VCCU auf Raspberry
3 x Raspi3 mit piCorePlayer/Kodi für Multiroom Audio (+ Tablets/iPeng/iPods)
Standort 2: Homematic (Wired + einige Funkmodule) über CCU2 und PocketHome HD, VCCU auf Raspberry
3 x Raspi3 mit piCorePlayer/Kodi für Multiroom Audio (+ Tablets/iPeng/iPods)
-
- Beiträge: 12108
- Registriert: 20.11.2016, 20:01
- Hat sich bedankt: 848 Mal
- Danksagung erhalten: 2148 Mal
- Kontaktdaten:
Re: Füllstandsensor mit Druck- statt US-Sensor
Anders wäre die Übertragung eines Wertes mit 2 Dezimalstellen auch nicht möglich.
Re: Füllstandsensor mit Druck- statt US-Sensor
Ich will nicht sagen, dass ich das auf Anhieb verstehe, aber ich habe mir schon gedacht, dass dies nicht Bug, sondern Feature war. Ist ja schließlich auf einen ganz anderen Wertebereich ausgelegt gewesen.
Standort 1: FS20 + Homematic mit CUL und FHEM (immer aktuelle Ver.) auf Raspberry Pi
Standort 2: Homematic (Wired + einige Funkmodule) über CCU2 und PocketHome HD, VCCU auf Raspberry
3 x Raspi3 mit piCorePlayer/Kodi für Multiroom Audio (+ Tablets/iPeng/iPods)
Standort 2: Homematic (Wired + einige Funkmodule) über CCU2 und PocketHome HD, VCCU auf Raspberry
3 x Raspi3 mit piCorePlayer/Kodi für Multiroom Audio (+ Tablets/iPeng/iPods)
Re: Füllstandsensor mit Druck- statt US-Sensor
Naja du überträgst ein INT in der Form 12345. Das repräsentiert die Zahl 123,45.
Damit das richtig angezeigt wird teilst Du 12345 durch 100 und bekommst 123,45
Damit das richtig angezeigt wird teilst Du 12345 durch 100 und bekommst 123,45
Wer Rechtschreibfehler findet darf sie behalten.
----------------o00o----'(_)'----o00o---------------
----------------o00o----'(_)'----o00o---------------
Re: Füllstandsensor mit Druck- statt US-Sensor
ah ja, jetzt... Muss mich erst noch dran gewöhnen, dass die Wege hier manchmal nicht so sind, wie man es sich als Nicht-Programmierer vorstellen würde. Ich hätte erwartet, dass wenn der Wert 123,45 ist, auch 123,45 im Telegramm übertragen wird...
Standort 1: FS20 + Homematic mit CUL und FHEM (immer aktuelle Ver.) auf Raspberry Pi
Standort 2: Homematic (Wired + einige Funkmodule) über CCU2 und PocketHome HD, VCCU auf Raspberry
3 x Raspi3 mit piCorePlayer/Kodi für Multiroom Audio (+ Tablets/iPeng/iPods)
Standort 2: Homematic (Wired + einige Funkmodule) über CCU2 und PocketHome HD, VCCU auf Raspberry
3 x Raspi3 mit piCorePlayer/Kodi für Multiroom Audio (+ Tablets/iPeng/iPods)
-
- Beiträge: 12108
- Registriert: 20.11.2016, 20:01
- Hat sich bedankt: 848 Mal
- Danksagung erhalten: 2148 Mal
- Kontaktdaten:
Re: Füllstandsensor mit Druck- statt US-Sensor
Die Telegramm-Payload besteht aus einzelnen Bytes.
Ein Byte kann Werte von 0 - 255 (00000000 - 11111111) annehmen.
Ein Byte kann nicht 28,3 sein.
Und ist ein zu übertragener Wert > 255, wird er in mehrere Bytes aufgeteilt...
Ein Byte kann Werte von 0 - 255 (00000000 - 11111111) annehmen.
Ein Byte kann nicht 28,3 sein.
Und ist ein zu übertragener Wert > 255, wird er in mehrere Bytes aufgeteilt...
Re: Füllstandsensor mit Druck- statt US-Sensor
Danke! Mit Euren Erklärungen bekommt das alles seine Logik.
Daher das & 0xff; ?Und ist ein zu übertragener Wert > 255, wird er in mehrere Bytes aufgeteilt...
Standort 1: FS20 + Homematic mit CUL und FHEM (immer aktuelle Ver.) auf Raspberry Pi
Standort 2: Homematic (Wired + einige Funkmodule) über CCU2 und PocketHome HD, VCCU auf Raspberry
3 x Raspi3 mit piCorePlayer/Kodi für Multiroom Audio (+ Tablets/iPeng/iPods)
Standort 2: Homematic (Wired + einige Funkmodule) über CCU2 und PocketHome HD, VCCU auf Raspberry
3 x Raspi3 mit piCorePlayer/Kodi für Multiroom Audio (+ Tablets/iPeng/iPods)
-
- Beiträge: 12108
- Registriert: 20.11.2016, 20:01
- Hat sich bedankt: 848 Mal
- Danksagung erhalten: 2148 Mal
- Kontaktdaten:
Re: Füllstandsensor mit Druck- statt US-Sensor
Das & 0xff liefert von einem Wert der größer als 8 Bit (1 Byte) ist, die 8 Bits ganz rechts.
Beispiel
dezimal 487 = binär 00000001 11100111
487 & 0xff = 11100111
Re: Füllstandsensor mit Druck- statt US-Sensor
Danke. Das bringt mich der Lösung eines der größten Menschheitsrätsel etwas näher, nämlich das des bitweisen Verschiebens. Aber so ganz habe ichs noch nicht:
Ich will den Wert pressure = 1234 (10011010010) im Telegramm versenden:
pload[1] = (pressure >> & 0xff;
heisst also, dass zunächst der Wert von pressure um 8 bit nach rechts verschoben wird:
(1234 >> macht aus 0000010011010010 0000000000000100
& 0xff
wäre dann 00000100 , also dezimal 4?
Was bringt mir das?
Ich will den Wert pressure = 1234 (10011010010) im Telegramm versenden:
pload[1] = (pressure >> & 0xff;
heisst also, dass zunächst der Wert von pressure um 8 bit nach rechts verschoben wird:
(1234 >> macht aus 0000010011010010 0000000000000100
& 0xff
wäre dann 00000100 , also dezimal 4?
Was bringt mir das?
Standort 1: FS20 + Homematic mit CUL und FHEM (immer aktuelle Ver.) auf Raspberry Pi
Standort 2: Homematic (Wired + einige Funkmodule) über CCU2 und PocketHome HD, VCCU auf Raspberry
3 x Raspi3 mit piCorePlayer/Kodi für Multiroom Audio (+ Tablets/iPeng/iPods)
Standort 2: Homematic (Wired + einige Funkmodule) über CCU2 und PocketHome HD, VCCU auf Raspberry
3 x Raspi3 mit piCorePlayer/Kodi für Multiroom Audio (+ Tablets/iPeng/iPods)