HB-UNI-Sensor1 - Neuauflage

Entwicklung und Bau von Hardware aller Art, die im HM-Umfeld eingesetzt werden kann

Moderator: Co-Administratoren

magnum1795
Beiträge: 268
Registriert: 13.05.2020, 17:56
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 48 Mal
Danksagung erhalten: 23 Mal

Re: HB-UNI-Sensor1 - Neuauflage

Beitrag von magnum1795 » 09.07.2020, 18:55

TomMajor hat geschrieben:
09.07.2020, 18:41
...
Hast du denn die Wassertemperatur an die entsprechende Stelle in die payload geschrieben?

...
und genau das habe ich noch nicht verstanden. Wo genau müsste ich das ändern und was genau sollte dort stehen? Hast du bitte mal ein Beispiel dafür?

Wie gesagt, ich möchte ja die Daten des DS18B20 dort sehen. Muss man das im Sketch oder der .xml Datei machen? Stelle mich gerade etwas Blöd an oder ich sehe den Wald vor lauter Bäumen nicht. Sorry für meine Unwissenheit.

Ach ja, was ist wenn ich nun zwei UniSensoren haben möchte und beim Zweiten soll aber ein anderer Name drin stehen? Muss ich mir dann eine zweite .xml Datei anlegen und diese eventuell umbenennen?

Das mit den Klammern ist erstmal zweitrangig und nur ein Schönheitsfehler. Werde ich vielleicht mal ändern wenn alles Richtig läuft. Und ich Danke dir für deine Bemühungen mir zu helfen.

Das sind meine Änderungen in der .xml Datei das "Fett" Gekennzeichnete" hier
....
<parameter id="Wassertemperatur" operations="read,event">
<logical type="float" min="0.0" max="35.0" unit="°C" />
<physical type="integer" interface="command" value_id="Wassertemperatur">
<event frame="WEATHER_EVENT" />
</physical>
<conversion type="float_integer_scale" factor="10.0" />
<description>
<field id="AutoconfRoles" value="WEATHER" />
</description>
</parameter>

....
<frame id="WEATHER_EVENT" direction="from_device" event="true" fixed_channel="1" type="0x70">
<parameter type="integer" signed="true" index="9" size="1.7" param="TEMPERATURE" />
<parameter type="integer" index="11" size="2.0" param="AIR_PRESSURE" />
<parameter type="integer" index="13" size="1.0" param="HUMIDITY" />
<parameter type="integer" index="14" size="4.0" param="LUX" />
<parameter type="integer" index="18" size="1.0" param="Wassertemperatur" />
<parameter type="integer" index="19" size="2.0" param="OPERATING_VOLTAGE" />
</frame>
</frames>
...


und im Sketch das hier:
....

public:
void init(uint8_t msgcnt, int16_t temp, uint16_t airPressure, uint8_t humidity, uint32_t brightness, uint8_t temp1,
uint16_t batteryVoltage, bool batLow, uint16_t customData
.....
// digInputState
pload[7] = temp1;
.......
WeatherEventMsg msg;

int16_t temperature10;
uint16_t airPressure10;
uint8_t humidity;
uint32_t brightness100;
uint8_t temp1;
uint16_t customData;
uint16_t batteryVoltage;
bool regularWakeUp;
......
public:
WeatherChannel()
: Channel()
, Alarm(seconds2ticks(60))
, temperature10(0)
, airPressure10(0)
, humidity(0)
, brightness100(0)
, temp1(0)
, customData(0)
, batteryVoltage(0)
, regularWakeUp(true)
.....
// Falls DS18X20 vorhanden, dessen Temp der BME280/BMP180 Temp vorziehen
#ifdef SENSOR_DS18X20
ds18x20.measure();
temp1 = ds18x20.temperature();
#endif
.........

TomMajor
Beiträge: 1793
Registriert: 30.08.2017, 23:25
Hat sich bedankt: 175 Mal
Danksagung erhalten: 399 Mal
Kontaktdaten:

Re: HB-UNI-Sensor1 - Neuauflage

Beitrag von TomMajor » 09.07.2020, 20:18

Das mit den Diffs sieht jetzt viel besser aus :)
Komme erst später dazu das mir genauer anzusehen.
Viele Grüße,
Tom

jp112sdl
Beiträge: 12116
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 849 Mal
Danksagung erhalten: 2150 Mal
Kontaktdaten:

Re: HB-UNI-Sensor1 - Neuauflage

Beitrag von jp112sdl » 09.07.2020, 21:39

Wie funktioniert das mit Temperaturen > 25,5 °C ?
Ist ja nur 1 Byte vorgesehen...

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

magnum1795
Beiträge: 268
Registriert: 13.05.2020, 17:56
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 48 Mal
Danksagung erhalten: 23 Mal

Re: HB-UNI-Sensor1 - Neuauflage

Beitrag von magnum1795 » 09.07.2020, 22:03

jp112sdl hat geschrieben:
09.07.2020, 21:39
Wie funktioniert das mit Temperaturen > 25,5 °C ?
Ist ja nur 1 Byte vorgesehen...
Sorry, verstehe deine Frage nicht. Ich habe ja digInputState (Ventilposition) komplett rausgelöscht und eben dafür Wassertemperatur dort eingetragen.

Leider wird mir aber keine angezeigt, nur in der WebUi steht jetzt [Wassertemperatur] drin, aber keine bzw. absolut falsche temperaturanzeige.

Wie oder Was muss ich denn ändern damit eben dort die Temperatur vom DS18B20 angezeigt wird? ich habe keine Ahnung vom Programmieren, noch dazu stehe ich mit Englisch auf "Kriegsfuß". Hoffe das du mir weiter helfen kannst. Vielen dank schonmal

PS: Hast du bitte mal ein Beispiel dafür?

jp112sdl
Beiträge: 12116
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 849 Mal
Danksagung erhalten: 2150 Mal
Kontaktdaten:

Re: HB-UNI-Sensor1 - Neuauflage

Beitrag von jp112sdl » 09.07.2020, 22:38

Die Temperatur wird mit 10 multipliziert, damit eine Dezimalstelle mit übertragen werden kann.
28,3°C = 283

1 Byte kann nur Werte von 0 ... 255 annehmen.
magnum1795 hat geschrieben:
09.07.2020, 22:03
PS: Hast du bitte mal ein Beispiel dafür?
In dem Sketch ist ja schon ein Temperaturfeld drin. Dort siehst du, was du brauchst.

Jedenfalls ist es mit "einfach Ventilposition gegen Temperatur" austauschen nicht getan.

Möchte da ungern in Toms Sketch mit rumbasteln.

Grob gesagt: Entweder du verzichtest auf die Dezimalstelle und nimmst nur ganzzahlige Temperaturwerte, dann kommst du mit 1 Byte aus.

Anderenfalls brauchst halt 2 Byte:

Code: Alles auswählen

<parameter type="integer" signed="true" index="18" size="2.0" param="Wassertemperatur" />
<parameter type="integer" index="20" size="2.0" param="OPERATING_VOLTAGE" />
Im Sketch halt analog zur temp:

Code: Alles auswählen

int16_t temp1
...
pload[7] = (temp1 >> 8) & 0xff;
pload[8] = temp1 & 0xff;
Alle folgenden pload[]-Indizes müssen dann natürlich eins weiterwandern

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

magnum1795
Beiträge: 268
Registriert: 13.05.2020, 17:56
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 48 Mal
Danksagung erhalten: 23 Mal

Re: HB-UNI-Sensor1 - Neuauflage

Beitrag von magnum1795 » 09.07.2020, 23:00

@jerome

danke dir, werde es morgen mal testen.

TomMajor
Beiträge: 1793
Registriert: 30.08.2017, 23:25
Hat sich bedankt: 175 Mal
Danksagung erhalten: 399 Mal
Kontaktdaten:

Re: HB-UNI-Sensor1 - Neuauflage

Beitrag von TomMajor » 09.07.2020, 23:42

Genau wie Jerome schreibt, die Temperatur nimmt default 2 Bytes in der payload.

Das Einfachste wäre du nimmst die 2 Byte custom data, die jetzt schon da sind, für deine extra Temperatur her:
https://github.com/TomMajor/SmartHome/b ... 1.ino#L218
Dort schreibst du die neue Temp. aus
temp1 = ds18x20.temperature();
rein.

Dann im xml

Code: Alles auswählen

...
        <parameter id="Wassertemperatur" operations="read,event">
          <logical type="float" min="-50.0" max="120.0" unit="°C" />
          <physical type="integer" interface="command" value_id="Wassertemperatur">
            <event frame="WEATHER_EVENT" />
          </physical>
          <conversion type="float_integer_scale" factor="10.0" />
          <description>
            <field id="AutoconfRoles" value="WEATHER" />
          </description>
        </parameter>
...
<parameter type="integer" signed="true"  index="21"  size="1.7" param="Wassertemperatur" />

Und
uint8_t temp1;
ändern in
int16_t temp1;

dann sollte es eigentlich passen.
Viele Grüße,
Tom

magnum1795
Beiträge: 268
Registriert: 13.05.2020, 17:56
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 48 Mal
Danksagung erhalten: 23 Mal

Re: HB-UNI-Sensor1 - Neuauflage

Beitrag von magnum1795 » 10.07.2020, 09:45

@TomMajor
@jp112sdl

vielen , vielen Dank Euch beiden. Habe es nun getestet (wie jp112sdl vorgeschlagen hat) und nun wird es so angezeigt wie ich es gern haben wollte.

Dennoch sind noch zwei Fragen offen.
1.) wenn ich einen zweiten Unisensor verwende, wird ja dann dort auch "Wassertemperatur" mit angezeigt, da es so in der .xml Datei im Custom_Firmware Ordner drin ist. Ich würde aber beim zweiten Unisensor anstatt Wassertemperatur dort aber lieber "Saunatemperatur" drin stehen haben.
Wenn ich es aber Richtig verstanden habe, so müsste ich eine andere Device ID (z.B. HB-UNI-Sensor-Heizung) nehmen und zusätzlich dann noch eine zweite .xml Datei (hb-uni-sensor-heizung.xml) im Custom_Firmware Ordner hinterlegen. Ist das soweit Richtig ?

2.) ich habe nun mal Testweise noch einen Max44009 mit angeschlossen. In der Device_Example.h habe ich ihn mit definiert und auch die I2C Adresse vorher überprüft und eingetragen. Leider wird dieser aber nicht erkannt. Hatte Ihn vorher an einen ESP8266 mit EasyMega Firmware angeschlossen und dort einen I2C Scan gemacht. Hier wird er sofort gefunden und die I2C Adresse lautet 0x4A . Sollte also alles soweit in Ordnung sein. Schließe ich ihn wieder an den Arduino Pro mini an und lasse das Log mit laufen, wird er eben nicht erkannt.
An was könnte denn nun wieder das liegen? Verdrahtung stimmt und habe ich mehrfach überprüft. Auch habe ich den BME280 mal abgesteckt, wird dennoch nicht erkannt. Beide I2C Ports probiert, nichts .Im Sketch habe ich nichts weiter verändert, nur die Device_Example angepasst und dann neu geflasht.

#define SENSOR_DS18X20 // ONEWIRE_PIN define weiter unten muss zur HW passen!
#define SENSOR_BME280 // BME280 Library (finitespace) verwendet I2C Addr. 0x76, für 0x77 die Library anpassen!
//#define SENSOR_BMP180
#define SENSOR_MAX44009 // MAX44009_ADDR define weiter unten muss zur HW passen!
//#define SENSOR_TSL2561 // TSL2561_ADDR define weiter unten muss zur HW passen!
//#define SENSOR_BH1750 // BH1750_ADDR define weiter unten muss zur HW passen!
//#define SENSOR_SHT31 // SHT31_ADDR define weiter unten muss zur HW passen!
//#define SENSOR_SHT21
//#define SENSOR_SHT10 // SHT10_DATAPIN / SHT10_CLKPIN define weiter unten muss zur HW passen!
//#define SENSOR_DIGINPUT // DIGINPUT_PIN define weiter unten muss zur HW passen!
//#define SENSOR_VEML6070
//#define SENSOR_VEML6075


//---------------------------------------------------------
// Pin Definitionen Allgemein
#define CONFIG_BUTTON_PIN 8
#define LED_PIN 4


//---------------------------------------------------------
// Pin und Address Definitionen Sensoren
#define ONEWIRE_PIN 3
#define MAX44009_ADDR 0x4A

#####################################################################################
#####################################################################################

AskSin++ V4.1.6 (Jul 10 2020 09:01:46)
DS18x20 found: 28AE2A7F3A190192
BME280 found
Sensor setup done
Serial: UNISENS002
Clock SYSCLOCK
Address Space: 32 - 79
CC init1
CC Version: 04
- ready
tmBattery Voltage: 3312
Battery set low: 21
Battery set crit: 19
Config Freq: 0x21659A
Config Changed: List0
ledMode: 1
lowBatLimit: 21
Battery set low: 21
transmitDevTryMax: 6
updCycle: 60
altitude: 0
BME280 Temperature x10 : 243
BME280 Pressure x10 : 9879
BME280 PressureNN x10 : 9879
BME280 Humidity : 56
DS18x20 Temperature : 253
<- 17 01 84 70 A5A502 000000 00 F3 26 97 39 00 86 47 00 00 FD 0C F0 00 - 1230
Dateianhänge
IMG_20200710_095217.jpg
IMG_20200710_095022.jpg
i2c test scan.jpg
uni sensor 1-4.jpg

TomMajor
Beiträge: 1793
Registriert: 30.08.2017, 23:25
Hat sich bedankt: 175 Mal
Danksagung erhalten: 399 Mal
Kontaktdaten:

Re: HB-UNI-Sensor1 - Neuauflage

Beitrag von TomMajor » 10.07.2020, 20:19

Hey magnum1795, freut mich das es jetzt prinzipiell geht.

Für ein zweites Gerät mit Saunatemperatur würde ich einfach ein 2. xml anlegen analog zum ersten. Und ein komplett neue Device Model vergeben in Sketch und xml.
Nimm lieber Device Models die nirgends sonst verwendet werden, nicht HB-UNI-Sensor-Heizung. Sonst könnte es Probleme bei dir geben falls das AddOn mal upgedatet wird.
Liste der Entwickler Device Models:
https://asksinpp.de/rftypes/HomeBrew.ht ... subersicht

Max44009 kann ich nicht viel sagen, ev. ein HW-Problem. Bei mir läuft er stabil mit dem SW-Stand und wie ich weiß bei ein paar anderen Leuten auch.
Probier mal den Lötjumper für die Adresse richtig zu löten, sieht auf dem Foto so aus als ob der offen wäre, es gab mal ein ähnliches Problem im FHEM Forum wo die Adresse nur "zeitweilig" gültig war.
Also so löten:
https://www.amazon.de/MAX44009-Umgebung ... B07SVF3YJ3
Viele Grüße,
Tom

magnum1795
Beiträge: 268
Registriert: 13.05.2020, 17:56
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 48 Mal
Danksagung erhalten: 23 Mal

Re: HB-UNI-Sensor1 - Neuauflage

Beitrag von magnum1795 » 10.07.2020, 20:42

Danke. Wenn ich das soweit Richtig verstanden habe mit den zweiten Sensor, könnte ich ihn z.B. HB-UNI-Sensor2 und als ID dann 0xFB01 nehmen ?

Wegen den Max44009 werde ich mal probieren nachzulöten. Habe leider momentan keinen anderen mehr hier, nur einen GY-302 BH170. Sollte ja eigentlich auch gehen dann. Aber erst mal nachlöten und schauen was passiert.

Antworten

Zurück zu „Hardwareentwicklung und Selbstbau von Aktoren und Sensoren“