Integration von MySensors in FHEM geplant?

Begonnen von fh555, 06 September 2014, 00:40:58

Vorheriges Thema - Nächstes Thema

kleinerDrache

liegt daran das seit 2.0 sowohl Gateway als auch Repeater eigene Sensoren haben können und jeder Node auch als Repeater dienen kann.
Raspi 2 - Hmusb2 , 2xJeeLink , EnOcean pi: Serie14 Geräte , 6xHM-Sec-Rhs , 6xHM-CC-RT-DN, verschiedene MySensor Nodes, ein bischen MQTT

PeMue

Naja, so ganz warm werde ich mit den MySensors Knoten noch nicht.

Ich möchte die Radio ID automatisch vergeben lassen, aber manchmal klappt das nicht.
Für meine zwei Sensbender Micro habe ich mal den Speicher gelöscht und den Sketch noch einmal aufgespielt. Wann dann fhem mit dem Pairing der Sensoren beginnt, ist mir nicht so ganz klar.

Meine Vermutung:
- Gateway in den inclusion-mode versetzen
- den Sensor (node) hart resetten, dann sollte es klappen.

Ob man das Gateway aus- bzw. wieder einstecken muss, weiß ich nicht.

Für die Versorgungsspannung wollte ich eigentlich noch die Spannung anzeigen lassen, allerdings klappt das nicht. Mein Sketch anbei, vielleicht hat einer eine Idee. Ich habe mir jetzt dafür aus dem Batterylevel ein userreadings gebaut, aber sauber ist das m.E. nicht.

Danke + Gruß

PeMue
RPi3Bv1.2 rpiaddon 1.66 6.0 1xHM-CC-RT-DN 1.4 1xHM-TC-IT-WM 1.1 2xHB-UW-Sen-THPL-O 0.15 1x-I 0.14OTAU  1xCUNO2 1.67 2xEM1000WZ 2xUniroll 1xASH2200 3xHMS100T(F) 1xRFXtrx 90 1xWT440H 3xTFA30.3150 5xFA21
RPi1Bv2 LCDCSM 1.63 5.8 2xMAX HKT 1xMAX RT V200KW1 Heizung Wasser

kleinerDrache

#872
Wegen der ID Vergabe könnte ich auch manchmal verzweifeln (sollte eigentlich Automatisch gehen aber wie schon bemerkt geht nicht immer) ich vergeb meine immer im Node-Sketch. Eigentlich soll man am Gateway "Inklusion Button" drücken dann lauscht der Gatway die im Gateway-Sketch eingestellte Zeit auf "Presentations" der Nodes. Die werden nur wärend des Bootvorgangs gesendet (wie bei HM und Co mit dem Pairing). Man kann aber auch das Attibut "Inklusion" Im FHEM Gateway Device dauerhaft auf "on" stellen dann fällt das Button drücken weg und neu eingeschaltete Nodes werden direkt angelegt.

Wegen Battery-Status:
Du legst in deinem Sketch eine extra Message dafür an was unnötig ist. Eine Spannungsangabe wird eh nicht übertragen sondern nur der %-wert. Schau dir mal das "BatteryPoweredNode" in den Beispielen an. Ist zwar für Messung am Analogport sollte aber auch mit der Badgap-Messung funktionieren wie du sie einbaust ist ja nur eine andere Datenquelle.

Du willst DualOptiBoot und Hardware Signing nutzen sehe ich das richtig ?

Edit:ok hatte mir die sensbeder noch nie angeschaut die haben das alles schon onboard.(extra speicher und den ATSHA)
Raspi 2 - Hmusb2 , 2xJeeLink , EnOcean pi: Serie14 Geräte , 6xHM-Sec-Rhs , 6xHM-CC-RT-DN, verschiedene MySensor Nodes, ein bischen MQTT

borzo83

Ich habe das Problem dass mein MySensors Temperatursensor nach ein paar Stunden Arbeit sich anscheinend aufhängt und nur nach einer Stromunterbrechung sich wieder mit dem MySensors Gateaway (Serial) verbindet. Beide sind in der Version 2.0

Tritt das bei jemandem auch auf?

kleinerDrache

#874
Oder möchtest du das so haben ? (siehe Bild)

wenn ja hab mal den Sketch angehängt (Batterie aber per Spannungsteiler gemessen)

@borzo83
Wie weit ist dein Sensor vom Gateway Entfernt ?
Raspi 2 - Hmusb2 , 2xJeeLink , EnOcean pi: Serie14 Geräte , 6xHM-Sec-Rhs , 6xHM-CC-RT-DN, verschiedene MySensor Nodes, ein bischen MQTT

gloob

Ich messe die Batteriespannung intern, ohne zusätzliche Beschaltung und so wird es im Sensebender Micro Sketch auch gemacht. Klappt bei mir mit meinen eigenen Sensoren auch wunderbar.

/*******************************************
*
* Internal battery ADC measuring
*
*******************************************/
long readVcc() {
  // Read 1.1V reference against AVcc
  // set the reference to Vcc and the measurement to the internal 1.1V reference
  #if defined(__AVR_ATmega32U4__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
    ADMUX = _BV(REFS0) | _BV(MUX4) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1);
  #elif defined (__AVR_ATtiny24__) || defined(__AVR_ATtiny44__) || defined(__AVR_ATtiny84__)
    ADMUX = _BV(MUX5) | _BV(MUX0);
  #elif defined (__AVR_ATtiny25__) || defined(__AVR_ATtiny45__) || defined(__AVR_ATtiny85__)
    ADcdMUX = _BV(MUX3) | _BV(MUX2);
  #else
    ADMUX = _BV(REFS0) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1);
  #endif 

  delay(2); // Wait for Vref to settle
  ADCSRA |= _BV(ADSC); // Start conversion
  while (bit_is_set(ADCSRA,ADSC)); // measuring

  uint8_t low  = ADCL; // must read ADCL first - it then locks ADCH 
  uint8_t high = ADCH; // unlocks both

  long result = (high<<8) | low;

  result = 1125300L / result; // Calculate Vcc (in mV); 1125300 = 1.1*1023*1000
  return result; // Vcc in millivolts

}
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

PeMue

Hallo kleinerDrache,

Zitat von: kleinerDrache am 30 Oktober 2016, 14:35:33
Wegen Battery-Status:
Du legst in deinem Sketch eine extra Message dafür an was unnötig ist. Eine Spannungsangabe wird eh nicht übertragen sondern nur der %-wert.
ich würde aber gerne (wie bei Homematic) ein zusätzliches Reading haben. Allerdings wird das irgendwie nicht übertragen, obwohl autocreate für das Multimeter Device Strom, Spannung und Impedanz erzeugt. Hast Du mir eine Idee, wie ich das machen muss?

Danke + Gruß

PeMue
RPi3Bv1.2 rpiaddon 1.66 6.0 1xHM-CC-RT-DN 1.4 1xHM-TC-IT-WM 1.1 2xHB-UW-Sen-THPL-O 0.15 1x-I 0.14OTAU  1xCUNO2 1.67 2xEM1000WZ 2xUniroll 1xASH2200 3xHMS100T(F) 1xRFXtrx 90 1xWT440H 3xTFA30.3150 5xFA21
RPi1Bv2 LCDCSM 1.63 5.8 2xMAX HKT 1xMAX RT V200KW1 Heizung Wasser

gloob

#877
Also ich habe es wie folgt umgesetzt. Dann bekommt man die Prozente und den Spannungswert.

Global:
MyMessage msgBatt(BATT_SENSOR, V_VOLTAGE);

Presentation:
present(BATT_SENSOR, S_POWER);

/********************************************
*
* Sends battery information (battery percentage)
*
* Parameters
* - force : Forces transmission of a value
*
*******************************************/
void sendBattLevel(bool force)
{
  if (force) lastBattery = -1;
  long vcc = readVcc();
  if (vcc != lastBattery) {
    lastBattery = vcc;

#ifdef BATT_SENSOR
    float send_voltage = float(vcc)/1000.0f;
delay(senddelay);
    send(msgBatt.set(send_voltage,3));
#endif

    // Calculate percentage

    vcc = vcc - 1900; // subtract 1.9V from vcc, as this is the lowest voltage we will operate at
   
    long percent = vcc / 14.0;
    delay(senddelay);
    sendBatteryLevel(percent);
    transmission_occured = true;
  }
}


Und folgendes in FHEM

attr devicename mapReading_energy199 199 voltage
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

PeMue

Hm, genau so habe ich es auch umgesetzt. Da legt fhem dann power, energy und noch was an. Aber ich bekomme keine Readings rein. Daher habe ich folgendes definiert:
global:
present(CHILD_ID_BATT,S_MULTIMETER);
Aber auch da geht nichts. Kannst Du bitte mal Deine fhem Definition posten?

Danke + Gruß

Peter
RPi3Bv1.2 rpiaddon 1.66 6.0 1xHM-CC-RT-DN 1.4 1xHM-TC-IT-WM 1.1 2xHB-UW-Sen-THPL-O 0.15 1x-I 0.14OTAU  1xCUNO2 1.67 2xEM1000WZ 2xUniroll 1xASH2200 3xHMS100T(F) 1xRFXtrx 90 1xWT440H 3xTFA30.3150 5xFA21
RPi1Bv2 LCDCSM 1.63 5.8 2xMAX HKT 1xMAX RT V200KW1 Heizung Wasser

gloob

#879
So sieht bei mir eine komplette Konfiguration für einen Sensor aus:

define MYSENSOR_TEST MYSENSORS_DEVICE 9
attr MYSENSOR_TEST IODev mysensor_gateway
attr MYSENSOR_TEST mapReading_energy199 199 voltage
attr MYSENSOR_TEST mapReading_humidity2 2 humidity
attr MYSENSOR_TEST mapReading_temperature1 1 temperature
attr MYSENSOR_TEST mode node
attr MYSENSOR_TEST version 2.0.0


Und so sehen dann die Readings aus:

SKETCH_NAME RedBoard 2016-10-30 16:57:51
SKETCH_VERSION 2.0 2016-10-30 16:57:51
batterylevel 106 2016-10-30 16:59:54
energy199 3.389 2016-10-30 16:59:54
humidity2 55 2016-10-30 16:59:54
parentId 0 2016-10-30 16:57:51
temperature1 25.1 2016-10-30 16:59:54


Irgendwas scheint da aber in FHEM mit dem autocreate noch nicht richtig zu funktionieren.
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

PeMue

Und bei mir mit o.g. Definition bzw. der ID 3:
# sensebender micro board on top of solar storage
define UG_Heizung_sensor MYSENSORS_DEVICE 101
attr UG_Heizung_sensor IODev PMMySGW02
attr UG_Heizung_sensor mapReading_temperature 1 temperature
attr UG_Heizung_sensor mapReading_humidity 2 humidity
attr UG_Heizung_sensor mapReading_voltage 3 voltage
attr UG_Heizung_sensor mapReading_current 3 current
attr UG_Heizung_sensor mapReading_impedance 3 impedance
attr UG_Heizung_sensor mode node
attr UG_Heizung_sensor room MySensors
attr UG_Heizung_sensor version 2.0.0
attr UG_Heizung_sensor userReadings batteryvoltage { sprintf("%5.3f", (((ReadingsVal("$name", "batterylevel", 0)) * 14 + 1900) / 1000));; }
attr UG_Heizung_sensor stateFormat T:temperature, H:humidity, V: batteryvoltage


wobei es kein Reading namens voltage gibt (siehe Anhang). Daher habe ich mir ein UserReading gebaut, was aus dem Prozentwert die Spannung berechnet ...
RPi3Bv1.2 rpiaddon 1.66 6.0 1xHM-CC-RT-DN 1.4 1xHM-TC-IT-WM 1.1 2xHB-UW-Sen-THPL-O 0.15 1x-I 0.14OTAU  1xCUNO2 1.67 2xEM1000WZ 2xUniroll 1xASH2200 3xHMS100T(F) 1xRFXtrx 90 1xWT440H 3xTFA30.3150 5xFA21
RPi1Bv2 LCDCSM 1.63 5.8 2xMAX HKT 1xMAX RT V200KW1 Heizung Wasser

kleinerDrache

Schau mal Da in den Sketch:

Zitat von: kleinerDrache am 30 Oktober 2016, 16:26:33
Oder möchtest du das so haben ? (siehe Bild)

wenn ja hab mal den Sketch angehängt (Batterie aber per Spannungsteiler gemessen)

@borzo83
Wie weit ist dein Sensor vom Gateway Entfernt ?

define aus Fhem: schwierig hab immer noch nicht raus gefunden wie ich den aus der ConfigDB ziehen kann,aber ich häng aber mal ein bild vom Sensor an und hier noch der List von dem Ding:

Internals:
   CFGFN
   DEF        5
   IODev      MySensors_Gateway
   NAME       bz_Bewegung
   NR         177
   STATE      off
   TYPE       MYSENSORS_DEVICE
   ack        0
   protocol   2.0.0
   radioId    5
   repeater   0
   Readings:
     2016-10-30 15:52:50   SKETCH_NAME     Bewegungsmelder
     2016-10-30 15:52:50   SKETCH_VERSION  1.2
     2016-10-30 15:53:03   batterylevel    62
     2016-10-30 15:52:50   parentId        0
     2016-10-30 17:02:34   tripped1        off
     2016-10-30 15:53:03   voltage         4.04
   Readingmappings:
     0:
       14:
         name       impedance
       38:
         name       voltage
       39:
         name       current
     1:
       15:
         name       armed1
       16:
         name       tripped1
   Sensormappings:
     0:
       receives:
       sends:
         16
         15
     1:
       receives:
       sends:
         16
         15
     10:
       receives:
       sends:
         6
         7
     11:
       receives:
       sends:
         11
     12:
       receives:
       sends:
         12
         14
     13:
       receives:
       sends:
         17
         18
     14:
       receives:
       sends:
         45
         21
         0
     15:
       receives:
       sends:
         13
         43
     16:
       receives:
       sends:
         23
         37
     17:
       receives:
       sends:
     18:
       receives:
       sends:
     19:
       receives:
         36
       sends:
         36
     2:
       receives:
       sends:
         16
         15
     20:
       receives:
         32
       sends:
         33
     21:
       receives:
       sends:
         34
         35
     22:
       receives:
       sends:
         37
         43
     23:
       receives:
         48
         24
         25
         26
         27
         28
       sends:
         48
         24
         25
         26
         27
         28
     24:
       receives:
       sends:
         37
         43
     25:
       receives:
       sends:
         19
         20
     26:
       receives:
         40
         17
       sends:
         40
         17
     27:
       receives:
         41
         17
       sends:
         41
         17
     28:
       receives:
         40
       sends:
         40
     29:
       receives:
       sends:
         45
         44
         21
         46
         22
     3:
       receives:
         2
         17
       sends:
         2
         17
     30:
       receives:
       sends:
         38
         39
         14
     31:
       receives:
       sends:
         2
         16
     32:
       receives:
       sends:
         16
         15
     33:
       receives:
       sends:
         37
         16
         15
     34:
       receives:
       sends:
         37
         16
         15
     35:
       receives:
       sends:
         37
         16
         15
     36:
       receives:
         47
       sends:
         47
     37:
       receives:
       sends:
         34
         35
     38:
       receives:
       sends:
         49
     39:
       receives:
       sends:
         0
         51
         52
         53
         2
     4:
       receives:
         2
         3
         17
       sends:
         2
         3
         17
     5:
       receives:
         29
         30
         31
         3
       sends:
         3
     6:
       receives:
       sends:
         0
         42
     7:
       receives:
       sends:
         1
     8:
       receives:
       sends:
         4
         5
     9:
       receives:
       sends:
         8
         9
         10
   Sets:
     reboot
     time
   Typemappings:
     0:
       type       temperature
     1:
       type       humidity
     10:
       type       direction
     11:
       type       uv
     12:
       type       weight
     13:
       type       distance
     14:
       type       impedance
     15:
       type       armed
       Val:
         0          off
         1          on
     16:
       type       tripped
       Val:
         0          off
         1          on
     17:
       type       power
     18:
       type       energy
     19:
       type       button_on
     2:
       type       status
       Val:
         0          off
         1          on
     20:
       type       button_off
     21:
       type       hvacflowstate
     22:
       type       hvacspeed
     23:
       type       brightness
       Range:
         max        100
         min        0
         step       1
     24:
       type       value1
     25:
       type       value2
     26:
       type       value3
     27:
       type       value4
     28:
       type       value5
     29:
       type       up
     3:
       type       percentage
       Range:
         max        100
         min        0
         step       1
     30:
       type       down
     31:
       type       stop
     32:
       type       ir_send
     33:
       type       ir_receive
     34:
       type       flow
     35:
       type       volume
     36:
       type       lockstatus
       Val:
         0          off
         1          on
     37:
       type       level
     38:
       type       voltage
     39:
       type       current
     4:
       type       pressure
     40:
       type       rgb
     41:
       type       rgbw
     42:
       type       id
     43:
       type       unitprefix
     44:
       type       hvacsetpointcool
     45:
       type       hvacsetpointheat
     46:
       type       hvacflowmode
     47:
       type       text
     48:
       type       custom
     49:
       type       position
     5:
       type       forecast
       Val:
         0          stable
         1          sunny
         2          cloudy
         3          unstable
         4          thunderstorm
         5          unknown
     50:
       type       irrecord
     51:
       type       ph
     52:
       type       orp
     53:
       type       ec
     54:
       type       var
     55:
       type       va
     56:
       type       powerfactor
     6:
       type       rain
     7:
       type       rainrate
     8:
       type       wind
     9:
       type       gust
Attributes:
   IODev      MySensors_Gateway
   mapReading_armed1 1 armed
   mapReading_current 0 current
   mapReading_impedance 0 impedance
   mapReading_tripped1 1 tripped
   mapReading_voltage 0 voltage
   mode       node
   room       Badezimmer
   stateFormat tripped1
   version    2.0.0
Raspi 2 - Hmusb2 , 2xJeeLink , EnOcean pi: Serie14 Geräte , 6xHM-Sec-Rhs , 6xHM-CC-RT-DN, verschiedene MySensor Nodes, ein bischen MQTT

borzo83

Zitat von: kleinerDrache am 30 Oktober 2016, 16:26:33
@borzo83
Wie weit ist dein Sensor vom Gateway Entfernt ?

Nicht so weit, ca. 7 Meter auf dem gleichen Stockwerk.
Es bricht sporadisch ab, mal nach ein paar Stunden, mal nach einem ganzen Tag.
Erst raus und reinstecken des Temperatursensors bringt den Sensor zum Neuaufbau der Verbindung mit dem FHEM Gateaway.

gloob

Zitat von: borzo83 am 30 Oktober 2016, 17:07:13
Nicht so weit, ca. 7 Meter auf dem gleichen Stockwerk.
Es bricht sporadisch ab, mal nach ein paar Stunden, mal nach einem ganzen Tag.
Erst raus und reinstecken des Temperatursensors bringt den Sensor zum Neuaufbau der Verbindung mit dem FHEM Gateaway.

Hast du einen Kondensator am NRF24L01 oder was für ein Board verwendest du?
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

gloob

Zitat von: PeMue am 30 Oktober 2016, 17:05:53
Und bei mir mit o.g. Definition bzw. der ID 3:
# sensebender micro board on top of solar storage
define UG_Heizung_sensor MYSENSORS_DEVICE 101
attr UG_Heizung_sensor IODev PMMySGW02
attr UG_Heizung_sensor mapReading_temperature 1 temperature
attr UG_Heizung_sensor mapReading_humidity 2 humidity
attr UG_Heizung_sensor mapReading_voltage 3 voltage
attr UG_Heizung_sensor mapReading_current 3 current
attr UG_Heizung_sensor mapReading_impedance 3 impedance
attr UG_Heizung_sensor mode node
attr UG_Heizung_sensor room MySensors
attr UG_Heizung_sensor version 2.0.0
attr UG_Heizung_sensor userReadings batteryvoltage { sprintf("%5.3f", (((ReadingsVal("$name", "batterylevel", 0)) * 14 + 1900) / 1000));; }
attr UG_Heizung_sensor stateFormat T:temperature, H:humidity, V: batteryvoltage


wobei es kein Reading namens voltage gibt (siehe Anhang). Daher habe ich mir ein UserReading gebaut, was aus dem Prozentwert die Spannung berechnet ...

Wie wird bei euch denn die Batteriespannung im Arduino Sketch übertragen und welchen Message-Typ nutzt ihr?
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