Selbstbau HM_WDS10_TH_O mit Luftdruckmessung

Begonnen von trilu, 23 Februar 2014, 12:23:22

Vorheriges Thema - Nächstes Thema

Gernott

Hallo Tom

Vielen Dank, darauf habe wahrscheinlich nicht nur ich gewartet.
Du hast den step-up weggelassen. Funktioniert der DS18x20 noch, wenn man das mit Akkus betreibt?  Laut Datenblatt braucht der 3 V. Mit Akkus liegt man mit 2.4 V dann doch eine Ecke drunter.

Gruß
G.

Bastel-Frank

Hi Tom,

vielen lieben Dank für deine/Eure supertolle Arbeit  ;D.

Viele Grüße
Frank

Tom Major

Zitat von: Bastel-Frank am 28 Juli 2019, 15:13:19
Hi Tom,

vielen lieben Dank für deine/Eure supertolle Arbeit  ;D.

Viele Grüße
Frank

Gerne  :)


Zitat von: Gernott am 28 Juli 2019, 14:22:19
Hallo Tom

Vielen Dank, darauf habe wahrscheinlich nicht nur ich gewartet.
Du hast den step-up weggelassen. Funktioniert der DS18x20 noch, wenn man das mit Akkus betreibt?  Laut Datenblatt braucht der 3 V. Mit Akkus liegt man mit 2.4 V dann doch eine Ecke drunter.

Gruß
G.

Ich habe diesmal zuerst die Gehäusevarianten gesucht die ich Innen gern hätte und dann danach die Platine designt. Bei den Gehäusen sind 2 Zellen kein Problem, deswegen habe ich den StepUp weggelassen da ich den bei der Platine sicher nie brauche, außerdem vergrößert er den Ruhestrom.

Standard für Homematic ist sicherlich Batteriebetrieb mit 3V. Ich habe gute Erfahrungen mit NiMH, bei 2,4V/2,3V z.B. funktionieren meine DS18x20 noch.
Sicherer ist es, mal eine Meßreihe zu machen bis zu welcher Spannung die eigenen DS18x20 korrekt funktionieren oder halt Batterien zu nehmen.
Früher: FHEM 5.x
Jetzt: RaspberryMatic / ioBroker

Bastel-Frank

Mal eine andere Frage:

Gibt es schon eine Ausprägung mit einem Hall-Sensor oder Ultraschallsensor, um den Füllstand eines Behälters zu messen?

Viele Grüße
Frank

gloob

Ja. Bitte mal die Suche nach Ultraschallsensor benutzen.
Gibt sogar einen eigenen Thread von mir: https://forum.fhem.de/index.php?topic=89857.0
Raspberry Pi 3 | miniCUL 433MHz | nanoCUL 868 MHz | nanoCUL 433 MHz | MySensors WLAN Gateway | LaCrosse WLAN Gateway | SignalESP 433 MHz | SignalESP 868 MHz | HM-MOD-UART WLAN Gateway | IR - 360 Grad WLAN Gateway

Gernott

Hallo

Ich habe testweise einen Unisensor von Tom mit einem HM-CC-RT-DN gepeert. Allerdings werden die Temperaturwerte nur gelegentlich vom Thermostaten übernommen. Bei Dirk's Firmware gab es damals nur gelegentliche Aussetzer. Das wurde mit der Version 0.15 gelöst und funktionierte danach bei mir einwandfrei.

Die Unisensor-Firmware wurde mit der CLOCK_RTC-Option kompiliert. Auf dem Board (Aussensensor v2.01) ist ein Quarz 32.768kHz an XTAL angelötet. Intervall der Temperaturmessung ist 300 s.

Gibt es hier schon Erfahrungen mit der Synchronisierung bzw. ist etwas spezielles bei den Einstellungen bzw. Registern zu beachten?

Gruß
G.

vbs

Hab ich mich auch schonmal gefragt. Normalerweise wird das Messinterval (und Sendeinterval) ja nach dieser speziellen Homematic-Formel berechnet, damit dann zu dem Zeitpunkt der Peer auch auf Empfang steht. Ist mir nicht klar, wie das gedacht ist, wenn der Sensor einfach hart alle 300 s sendet. Naiv gedacht klappt das so nicht, aber vlt. greifen da noch andere Mechanismen.

jp112sdl

vbs war schneller :)
Aber genau so hätte ich es auch geschrieben.
Nach meiner Kenntnis gibt es kein fixes Intervall.
Ist es nicht sogar so, dass bei originalen HM Geräten mit dem erstellen der Direktverknüpfung auch Wake On Radio beim Temperatursensor aktiviert wird, damit das HKT auf sein Verlangen nach dem Ausbleiben der zyklischen Werte sich ein Zwangsupdate holen kann?

vbs

Soweit ich weiß vergrößert der Empfänger nach einigen ausgebliebenen Telegrammen sein Empfangsfenster und wenn weiterhin keine empfangen werden, dann geht er irgendwann aus Verzweiflung für eine gewisse Zeit auf Dauerempfang, um sich dann wieder aufsynchronisieren zu können. Natürlich alles zu Lasten der Batterielebensdauer.

jp112sdl

Ja so hat es Frank Grass mal erklärt. Mir war aber dennoch so, dass es die WoR Option beim Sender extra dafür auch noch gibt.

papa

Der Delay muss wie hier berechnet werden.

https://github.com/pa-pa/AskSinPP/blob/6796f35eea71e8ed0baf826375d3a554b4a25992/examples/HM-WDS10-TH-O/HM-WDS10-TH-O.ino#L149

Ich muss das mal in die AskSin-Klasse verschieben. Das ist ja eher eine generelle Funktion.
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

Gernott

Wenn ich papa's Information richtig verstehe, kann es mit der Unisensor-FW von Tom prinzipiell nicht gehen, da dort ein fixes Messintervall vorgegeben ist?

Gruß
G.

Tom Major

Zitat von: Gernott am 03 August 2019, 14:30:53
Wenn ich papa's Information richtig verstehe, kann es mit der Unisensor-FW von Tom prinzipiell nicht gehen, da dort ein fixes Messintervall vorgegeben ist?

Gruß
G.

ja, wenn das spezielle HM Sendeintervall das Problem ist warum es mit dem Thermostat Peer nicht geht, dann kannst du nur versuchen, an dieser Stelle
https://github.com/TomMajor/SmartHome/blob/master/HB-UNI-Sensor1/HB-UNI-Sensor1.ino#L351

halt nicht das feste Updateintervall aus List0 zu verwenden sondern die Berechnung aus papas link.
Früher: FHEM 5.x
Jetzt: RaspberryMatic / ioBroker

Gernott

#2968
Zitat von: Tom Major am 03 August 2019, 14:51:26
halt nicht das feste Updateintervall aus List0 zu verwenden sondern die Berechnung aus papas link.

Hallo Tom

das wäre dann etwa so?

// reactivate for next measure
      HMID id;
      device().getDeviceID(id);
      uint32_t nextsend = delays(id,msgcnt);
      tick = nextsend / 1000; // seconds to wait
      millis = nextsend % 1000; // millis to wait
      rtc.add(*this);


uint32_t delays (const HMID& id,uint8_t msgcnt) {
    uint32_t value = ((uint32_t)id) << 8 | msgcnt;
    value = (value * 1103515245 + 12345) >> 16;
    value = (value & 0xFF) + 480;
    value *= 250;


Wenn ich noch millis initialisiere und delay() in delays() umbenenne, läuft zumindest der Compiler durch.
Mangels tiefergehender Programmierkenntnisse überblicke ich nicht, was noch anzupassen wäre...

Update

Habe es jetzt mal testweise etwas laufen lassen. Zumindest scheint eine Synchronisation zustande gekommen zu sein. Hier mal das Serial-Log dazu (Sensor: A5A503, HM-CC-RT-DN: 28BDCE):

AskSin++ V4.1.0 (Aug  3 2019 18:48:14)
SHT31 OK
Sensor setup done
Serial: UNISENS003
Clock RTC
Address Space: 32 - 79
CC init1
CC Version: 14
- ready
tmBattery Voltage: 3128
Battery set low:  21
Battery set crit: 19
Config Freq: 0x21655A
Config Changed: List0
ledMode: 1
lowBatLimit: 12
Battery set low:  12
transmitDevTryMax: 6
updCycle: 240
altitude: 0
<- 17 01 84 70 A5A503 28BDCE 01 09 2A 80 27 00 86 47 00 00 0C 38 00 00  - 315
180.500
<- 17 02 A2 70 A5A503 28BDCE 01 08 2A 80 29 00 86 47 00 00 0C 38 00 00  - 434
-> 10 03 A0 01 1EA24B A5A503 00 04 00 00 00 00 00  - 741
-> 10 03 A0 01 1EA24B A5A503 00 04 00 00 00 00 00  - 937
waitAck: 00
<- 17 02 A2 70 A5A503 28BDCE 01 08 2A 80 29 00 86 47 00 00 0C 38 00 00  - 1091
-> 10 03 A0 01 1EA24B A5A503 00 04 00 00 00 00 00  - 1126
-> 14 B9 B2 70 323FDE 35490B 01 00 29 00 00 00 00 0A 7A 0A 28  - 1345
waitAck: 00
<- 17 02 A2 70 A5A503 28BDCE 01 08 2A 80 29 00 86 47 00 00 0C 38 00 00  - 1748
-> 14 B9 B2 70 323FDE 35490B 01 00 29 00 00 00 00 0A 7A 0A 28  - 2037
-> 0A B9 80 02 35490B 323FDE 00  - 2162
waitAck: 00
<- 17 02 A2 70 A5A503 28BDCE 01 08 2A 80 29 00 86 47 00 00 0C 38 00 00  - 2406
waitAck: 00
<- 17 02 A2 70 A5A503 28BDCE 01 08 2A 80 29 00 86 47 00 00 0C 38 00 00  - 3053
waitAck: 00
<- 17 02 A2 70 A5A503 28BDCE 01 08 2A 80 29 00 86 47 00 00 0C 38 00 00  - 3700
-> 14 87 A2 70 5FD903 1EA24B 00 00 00 00 00 00 00 08 DD 0B 54  - 3776
-> 0A 87 80 02 1EA24B 5FD903 00  - 3891
waitAck: 00
166.250
<- 17 03 84 70 A5A503 28BDCE 01 0B 2A 80 28 00 86 47 00 00 0C 38 00 00  - 4425
151.750
<- 17 04 84 70 A5A503 28BDCE 01 0A 2A 80 27 00 86 47 00 00 0C 38 00 00  - 4540
137.250
<- 17 05 84 70 A5A503 28BDCE 01 08 2A 80 27 00 86 47 00 00 0C 38 00 00  - 4653
122.750
<- 17 06 84 70 A5A503 28BDCE 01 08 2A 80 28 00 86 47 00 00 0C 38 00 00  - 4765
172.500
<- 17 07 84 70 A5A503 28BDCE 01 07 2A 80 28 00 86 47 00 00 0C 38 00 00  - 4882
158.0
<- 17 08 84 70 A5A503 28BDCE 01 07 2A 80 27 00 86 47 00 00 0C 38 00 00  - 4997
143.500
<- 17 09 84 70 A5A503 28BDCE 01 07 2A 80 27 00 86 47 00 00 0C 38 00 00  - 5111
129.250
<- 17 0A 84 70 A5A503 28BDCE 01 07 2A 80 28 00 86 47 00 00 0C 38 00 00  - 5222
178.750
<- 17 0B 84 70 A5A503 28BDCE 01 07 2A 80 28 00 86 47 00 00 0C 38 00 00  - 5341
164.250
<- 17 0C 84 70 A5A503 28BDCE 01 07 2A 80 28 00 86 47 00 00 0C 38 00 00  - 5457
150.0
<- 17 0D 84 70 A5A503 28BDCE 01 07 2A 80 28 00 86 47 00 00 0C 38 00 00  - 5572
135.500
<- 17 0E 84 70 A5A503 28BDCE 01 06 2A 80 28 00 86 47 00 00 0C 38 00 00  - 5685
121.0
<- 17 0F 84 70 A5A503 28BDCE 01 07 2A 80 28 00 86 47 00 00 0C 38 00 00  - 5795
170.750
<- 17 10 84 70 A5A503 28BDCE 01 06 2A 80 28 00 86 47 00 00 0C 38 00 00  - 5912
156.250
<- 17 11 84 70 A5A503 28BDCE 01 06 2A 80 28 00 86 47 00 00 0C 38 00 00  - 6027
141.750
<- 17 12 84 70 A5A503 28BDCE 01 06 2A 80 28 00 86 47 00 00 0C 38 00 00  - 6141
127.250
<- 17 13 84 70 A5A503 28BDCE 01 05 2A 80 29 00 86 47 00 00 0C 38 00 00  - 6252
177.0
<- 17 14 84 70 A5A503 28BDCE 01 05 2A 80 29 00 86 47 00 00 0C 38 00 00  - 6371
162.500
<- 17 15 84 70 A5A503 28BDCE 01 05 2A 80 29 00 86 47 00 00 0C 38 00 00  - 6488
148.0
<- 17 16 A2 70 A5A503 28BDCE 01 05 2A 80 29 00 86 47 00 00 0C 38 00 00  - 6600
-> 10 17 A0 01 1EA24B A5A503 00 04 00 00 00 00 00  - 7172
waitAck: 00
<- 17 16 A2 70 A5A503 28BDCE 01 05 2A 80 29 00 86 47 00 00 0C 38 00 00  - 7254
-> 10 17 A0 01 1EA24B A5A503 00 04 00 00 00 00 00  - 7288
-> 10 17 A0 01 1EA24B A5A503 00 04 00 00 00 00 00  - 7485
waitAck: 00
<- 17 16 A2 70 A5A503 28BDCE 01 05 2A 80 29 00 86 47 00 00 0C 38 00 00  - 7911
waitAck: 00
<- 17 16 A2 70 A5A503 28BDCE 01 05 2A 80 29 00 86 47 00 00 0C 38 00 00  - 8558
-> 0A 16 80 02 28BDCE A5A503 00  - 8683
waitAck: 01
133.750
<- 17 17 84 70 A5A503 28BDCE 01 04 2A 80 29 00 86 47 00 00 0C 38 00 00  - 9279
183.250
<- 17 18 84 70 A5A503 28BDCE 01 04 2A 80 29 00 86 47 00 00 0C 38 00 00  - 9398
168.750
<- 17 19 84 70 A5A503 28BDCE 01 04 2A 80 2A 00 86 47 00 00 0C 38 00 00  - 9515
154.500
<- 17 1A 84 70 A5A503 28BDCE 01 04 2A 80 2A 00 86 47 00 00 0C 38 00 00  - 9629
140.0
<- 17 1B 84 70 A5A503 28BDCE 01 03 2A 80 2A 00 86 47 00 00 0C 38 00 00  - 9744
125.500
<- 17 1C 84 70 A5A503 28BDCE 01 03 2A 80 2A 00 86 47 00 00 0C 38 00 00  - 9854
175.250
<- 17 1D 84 70 A5A503 28BDCE 01 03 2A 80 2A 00 86 47 00 00 0C 38 00 00  - 9971
160.750
<- 17 1E 84 70 A5A503 28BDCE 01 02 2A 80 2C 00 86 47 00 00 0C 38 00 00  - 10088
146.250
<- 17 1F 84 70 A5A503 28BDCE 01 02 2A 80 2C 00 86 47 00 00 0C 38 00 00  - 10203
131.750
<- 17 20 84 70 A5A503 28BDCE 01 02 2A 80 2C 00 86 47 00 00 0C 38 00 00  - 10315
181.500
<- 17 21 84 70 A5A503 28BDCE 01 01 2A 80 2C 00 86 47 00 00 0C 38 00 00  - 10434
167.0
<- 17 22 84 70 A5A503 28BDCE 01 01 2A 80 2C 00 86 47 00 00 0C 38 00 00  - 10551
152.500
<- 17 23 84 70 A5A503 28BDCE 01 01 2A 80 2D 00 86 47 00 00 0C 38 00 00  - 10665
138.250
<- 17 24 84 70 A5A503 28BDCE 01 01 2A 80 2D 00 86 47 00 00 0C 38 00 00  - 10778
123.750
<- 17 25 84 70 A5A503 28BDCE 01 01 2A 80 2D 00 86 47 00 00 0C 38 00 00  - 10889
173.250
<- 17 26 84 70 A5A503 28BDCE 01 01 2A 80 2D 00 86 47 00 00 0C 38 00 00  - 11008
159.0
<- 17 27 84 70 A5A503 28BDCE 01 00 2A 80 2E 00 86 47 00 00 0C 38 00 00  - 11122
144.500
<- 17 28 84 70 A5A503 28BDCE 01 00 2A 80 2E 00 86 47 00 00 0C 38 00 00  - 11237
130.0
<- 17 29 84 70 A5A503 28BDCE 01 00 2A 80 2E 00 86 47 00 00 0C 38 00 00  - 11347
179.750
<- 17 2A A2 70 A5A503 28BDCE 01 00 2A 80 2E 00 86 47 00 00 0C 38 00 00  - 11466
-> 10 2B A0 01 1EA24B A5A503 00 04 00 00 00 00 00  - 11624
-> 10 2B A0 01 1EA24B A5A503 00 04 00 00 00 00 00  - 11831
-> 10 2B A0 01 1EA24B A5A503 00 04 00 00 00 00 00  - 12027
waitAck: 00
<- 17 2A A2 70 A5A503 28BDCE 01 00 2A 80 2E 00 86 47 00 00 0C 38 00 00  - 12130
waitAck: 00
<- 17 2A A2 70 A5A503 28BDCE 01 00 2A 80 2E 00 86 47 00 00 0C 38 00 00  - 12777
-> 0A 2A 80 02 28BDCE A5A503 00  - 12902
waitAck: 01
165.250
<- 17 2B 84 70 A5A503 28BDCE 00 FF 2A 80 2F 00 86 47 00 00 0C 38 00 00  - 13506
150.750
<- 17 2C 84 70 A5A503 28BDCE 00 FF 2A 80 2F 00 86 47 00 00 0C 38 00 00  - 13621
136.250
<- 17 2D 84 70 A5A503 28BDCE 00 FE 2A 80 2F 00 86 47 00 00 0C 38 00 00  - 13733
122.0
<- 17 2E 84 70 A5A503 28BDCE 00 FE 2A 80 2F 00 86 47 00 00 0C 38 00 00  - 13844
171.500
<- 17 2F 84 70 A5A503 28BDCE 00 FE 2A 80 2F 00 86 47 00 00 0C 38 00 00  - 13961
157.0
<- 17 30 84 70 A5A503 28BDCE 00 FE 2A 80 2F 00 86 47 00 00 0C 38 00 00  - 14075
142.750
<- 17 31 84 70 A5A503 28BDCE 00 FE 2A 80 2F 00 86 47 00 00 0C 38 00 00  - 14190
128.250
<- 17 32 84 70 A5A503 28BDCE 00 FE 2A 80 2F 00 86 47 00 00 0C 38 00 00  - 14303
177.750
<- 17 33 84 70 A5A503 28BDCE 01 01 2A 80 32 00 86 47 00 00 0C 38 00 00  - 14419
163.500


Sieht das einigermaßen sinnvoll aus?

Gruß
G.

Tom Major

Zitat von: Gernott am 03 August 2019, 17:03:37
Hallo Tom

das wäre dann etwa so?

// reactivate for next measure
      HMID id;
      device().getDeviceID(id);
      uint32_t nextsend = delays(id,msgcnt);
      tick = nextsend / 1000; // seconds to wait
      millis = nextsend % 1000; // millis to wait
      rtc.add(*this);


uint32_t delays (const HMID& id,uint8_t msgcnt) {
    uint32_t value = ((uint32_t)id) << 8 | msgcnt;
    value = (value * 1103515245 + 12345) >> 16;
    value = (value & 0xFF) + 480;
    value *= 250;


Wenn ich noch millis initialisiere und delay() in delays() umbenenne, läuft zumindest der Compiler durch.
Mangels tiefergehender Programmierkenntnisse überblicke ich nicht, was noch anzupassen wäre...

ich würde nicht rtc.add sondern clock.add machen da beim UniSensor per define am Anfang Sysclock (8MHz Quarz oder RC) oder RTC (32kHz Quarz) gewählt werden kann.
Sonst würde ich sagen probieren ob das mit dem Peer damit besser klappt.

Bei papa bei der Stelle
if( millis != 0 ) {
..
else

weiß ich nicht wozu diese da ist und ob man die hier auch brauchen würde, ich dachte die millis funktionieren sowie so nicht korrekt wenn das device im sleep ist.
Früher: FHEM 5.x
Jetzt: RaspberryMatic / ioBroker