Integration von MySensors in FHEM geplant?

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

Vorheriges Thema - Nächstes Thema

Omega

Die Lösung mit der statischen IP funktioniert doch nicht.
Wenn man nicht bis ganz zu Ende testet...

Neben meinem 1. Gateway (DHCP, ESP8266-12e) habe ich parallel ein weiteres zusammengebaut (ein ESP8266-12, jetzt mit statischer IP). Nachdem sich das 2. Gateway mit der gewünschten IP mit dem Router verbunden hat, dachte ich: Ziel erreicht.


Da ich jetzt den ESP8266-12e für etwas anderes verwenden möchte, habe ich in FHEM das andere Gateway genommen und es auf seine statische IP eingerichtet. Aber: in FHEM beim Gateway steht immer nur ,,disconnected". Ein set gateway connect hilft nicht. (ich habe nie beide Gateways parallel eingerichtet sondern nur die Definition des bereits eingerichteten Gateways angepasst).

Ich habe nicht nur die Definition auf die neue IP geändert, ich habe auch das Device komplett gelöscht (ging nicht über die Oberfläche, musste hart in der fhem.cfg editieren) und neu eingerichtet.
Hat alles nichts genützt. Erst als ich wieder auf DHCP umgestellt habe, habe ich sofort den Status ,,opened" bekommen.

Es ist vollkommen egal, ob ich den ESP-12 oder den 12e nehme – immer das gleiche Verhalten.
NUC6i3SYH (FHEM 5.8 in VM)
Homematic: HMLAN, HMUSB, HM-Sec-SD, HM-CC-RT-DN, HM-TC-IT, ... + diverse weitere
LaCrosseGateway, ESPEasy
ZWave

hexenmeister

Versuche mal mit PuTTY drauf (IP:PORT) zu konnekten, klappt das und was sieht man dann?
Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy

Omega

Das Gateway mit der statischen IP ist im Netzwerk. Ich sehe es sowohl im Router (angemeldet) als auch in der ARP-Tabelle.
Wenn ich mit Putty draufgehe, kommt nach einer Weile: Connection timed out. Also nichts zu sehen.

Beim Gateway (über DHCP verbunden) kommt mit Putty:

0;0;3;0;14;Gateway startup complete.
                                    100;0;1;0;1;52.0

Da stimmt alles.
Im Netz sind Hinweise zu finden über die Reihenfolge von wifi.config und wifi.begin. Habe beide Varianten probiert - kein Unterschied bei mir.
NUC6i3SYH (FHEM 5.8 in VM)
Homematic: HMLAN, HMUSB, HM-Sec-SD, HM-CC-RT-DN, HM-TC-IT, ... + diverse weitere
LaCrosseGateway, ESPEasy
ZWave

Hauswart


Zitat von: Sany am 21 November 2015, 16:38:41
Hallo neonet

verwendest Du den Sketch aus Post #564?

Ich habe mir den mal angeschaut und würde dort ein paar Änderungen vornehmen:
so steht er auf Github:
void loop()     
{     
  uint16_t valMQ = MQGetGasPercentage(MQRead(MQ_SENSOR_ANALOG_PIN)/Ro,GAS_CO);
  //Start Test
  uint16_t valMQ2 = MQGetGasPercentage(MQRead(MQ_SENSOR_ANALOG_PIN)/Ro,GAS_LPG);
  uint16_t valMQ3 = MQGetGasPercentage(MQRead(MQ_SENSOR_ANALOG_PIN)/Ro,GAS_SMOKE);
  //Ende Test
  Serial.println(val);
 
   Serial.print("LPG:");
   Serial.print(MQGetGasPercentage(MQRead(MQ_SENSOR_ANALOG_PIN)/Ro,GAS_LPG) );
   Serial.print( "ppm" );
   Serial.print("    ");   
   Serial.print("CO:");
   Serial.print(MQGetGasPercentage(MQRead(MQ_SENSOR_ANALOG_PIN)/Ro,GAS_CO) );
   Serial.print( "ppm" );
   Serial.print("    ");   
   Serial.print("SMOKE:");
   Serial.print(MQGetGasPercentage(MQRead(MQ_SENSOR_ANALOG_PIN)/Ro,GAS_SMOKE) );
   Serial.print( "ppm" );
   Serial.print("\n");
 
  //Start Test
  if (valMQ != lastMQ) {
      gw.send(msg.set((int)ceil(valMQ)));
      lastMQ = ceil(valMQ);
  }
 
  if (valMQ2 != lastMQ2) {
      gw.send(msgLPG.set((int)ceil(valMQ2)));
      lastMQ2 = ceil(valMQ2);
  }
 
  if (valMQ3 != lastMQ3) {
      gw.send(msgSMOKE.set((int)ceil(valMQ3)));
      lastMQ3 = ceil(valMQ3);
  }
  //Ende Test

  gw.sleep(SLEEP_TIME); //sleep for: sleepTime
}


Am Anfang der Loop wird der Sensor ausgelesen und die ermittelten Werte in variablen geschrieben. Diese sind als unsigned int deklariert, also nur positive Ganzzahlen.
Gleich danach werden sie auf der Konsole ausgegeben, aber hier werden die Sensoren nochmals gelesen. Das macht keinen Sinn, denn 2 mal Sensor auslesen bringt ziemlich sicher 2 verschiedene Werte. Also besser:

  Serial.print("LPG:");
   Serial.print(GAS_LPG);
   Serial.print( "ppm" );
 

das druckt die den Inhalt der Variablen, die Du ja gerade mit dem Sensorwert gefüttert hast. Die anderen 2 Zeilen bitte entsprechend anpassen.

dann kommt der Sendeteil:
  if (valMQ != lastMQ) {
      gw.send(msg.set((int)ceil(valMQ)));
      lastMQ = ceil(valMQ);
  }


erste und letzte Zeile sorgen ja nur dafür, dass ein Wert, der sich nicht geändert hat, nicht gesendet wird. Evtl. nimmst Du das mal raus, damit jeder Wert gesendet wird, sonst wird es unübersichtlich beim testen.

in der Mitte wird es interessant:
ceil() dient zum runden von Fliesskommazahlen: es ermittelt von der Fliesskommazahl x die kleinste Ganzzahl (Integer) die größer als x ist. Also 1.1 wird 2.
Davor steht noch mal int(), was eigenlich eine beliebigen Datentyp zu int konvertiert.
Da die Variable aber ein unsigned int ist, also eine Ganzzahl zwischen 0 und 65xxx, macht weder int() noch ceil() einen Sinn, im Gegenteil, man kann vermutlich nicht sagen, was dabei herauskommt. Dieses wird aber an fhem übermittelt und Du wunderst Dich, dass die Werte nicht übereinstimmen.

also einfach
gw.send(msg.set(valMQ));
und gut ist.

Probier das mal, und dann wäre noch die Frage offen, ob denn in fhem jetzt was ankommt.

Viel Erfolg!

sany
Hallo sany, ich schaue mir morgen deinen Vorschlag mal genauer an und korrigierte meine Version. Gruß
1. Installation:
KNX, Tasmota (KNX), Sonos, Unifi

2. Installation:
HM-CFG-USB, Unifi (, SIGNALduino 868, MySensors, SIGNALduino 433)

hexenmeister

Zitat von: Omega am 22 November 2015, 16:54:12
Das Gateway mit der statischen IP ist im Netzwerk. Ich sehe es sowohl im Router (angemeldet) als auch in der ARP-Tabelle.
Wenn ich mit Putty draufgehe, kommt nach einer Weile: Connection timed out. Also nichts zu sehen.

Beim Gateway (über DHCP verbunden) kommt mit Putty:

0;0;3;0;14;Gateway startup complete.
                                    100;0;1;0;1;52.0

Da stimmt alles.
Im Netz sind Hinweise zu finden über die Reihenfolge von wifi.config und wifi.begin. Habe beide Varianten probiert - kein Unterschied bei mir.
Sehr seltsam, stimmen die Werte für Subnet und Gateway und dns? Vor allem Subnet wäre wichtig. Ich muss bei mal mit meiner Hardware ausprobieren. Habe nur zeittechnisch etwas eng...
Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy

Hauswart

1. Installation:
KNX, Tasmota (KNX), Sonos, Unifi

2. Installation:
HM-CFG-USB, Unifi (, SIGNALduino 868, MySensors, SIGNALduino 433)

Peter_64

Hallo zusammen,
eine Frage zum Wifi GW und der festen IP. Klappt das bei jemandem mitlerweile gut oder ist der Punkt noch offen...danke

fh168

Zitat von: Peter_64 am 17 Dezember 2015, 13:58:08
Hallo zusammen,
eine Frage zum Wifi GW und der festen IP. Klappt das bei jemandem mitlerweile gut oder ist der Punkt noch offen...danke

Ich weiß jetzt nicht ob bei dir "feste IP" ein Kriterium ist, aber das WLAN-Gateway läuft schon bei mir im "Produktivbetrieb" seit Mitte Oktober 2015. Keine Störungen.

https://blog.moneybag.de/fhem-wlan-gateway-mit-mysensors-ohne-zu-loeten/

LG
/robin
Hue, Lacrosse, PCA301, MySensors, V 1.67 CUL 868 V3.4, Lacrosse-WLAN-Gateway, Tasmota RF-

Peter_64

Hallo Robin,
das auf Deinem Block hatte ich gelesen und hat mir sehr geholfen um das GW zum laufen zu bringen. Meinte mit der Frage ob man im GW eine feste IP speichern kann die sich dann im Netz einloggt. Oder ist es so das die IP die beim ersten Start des GW festgelegt wird im GW fest gespeichert  ist.

eldrik

Hallo in die Runde,

da ich bisher nichts passendes gefunden habe, hat bereits jemand ein funktionierendes Code Beispiel, mit dem man eine Nachricht an das Gateway wiederholen kann insofern, dieses das angeforderte Ack nicht an den Sensor zurückliefert?

Ich habe mit meinen Luftfeuchte & Bewegungsmelder Kombisensoren ab und zu das Problem, dass der gemeldete Zustand (Bewegung/keine Bewegung) nicht immer über das Serial Gateway, mit NRF24L01+PA+LNA Funkmodul, in Fhem, ankommt.

Daher würde ich die Meldung gerne erneut senden lassen.

Greetz
Eldrik

MrTom

#595
Hallo zusammen

ich habe einen  esp8266-Gateway (NodeMCU) an meinem FHEM angehängt und empfange von 2 Sensoren Daten. Der eine Sensor ist ein Temp/Hum-Sensor mit einem DHT22. Das klappt soweit ganz gut. Die Daten kommen an, die Hum-Daten zuverlässiger als die Temp-Daten.

Als zweiten Sensor habe ich einen Lux-Meter mit einem Arduino und  einem BH1750 angehängt. Auch da kommen die Daten im FHEM an. D.h. wenn ich den Sensor neu starte, zeigt mir das FHEM auch den korrekten Lux-Wert an:

Restart:
send: 100-100-0-0 s=255,c=0,t=17,pt=0,l=5,sg=0,st=ok:1.5.1
send: 100-100-0-0 s=255,c=3,t=6,pt=1,l=1,sg=0,st=ok:0
sensor started, id=100, parent=0, distance=1
send: 100-100-0-0 s=255,c=3,t=11,pt=0,l=16,sg=0,st=ok:Light Lux Sensor
send: 100-100-0-0 s=255,c=3,t=12,pt=0,l=3,sg=0,st=ok:1.0
send: 100-100-0-0 s=0,c=0,t=16,pt=0,l=0,sg=0,st=ok:
114
send: 100-100-0-0 s=0,c=1,t=23,pt=3,l=2,sg=0,st=ok:114


Event-Log:
s016-01-05 09:10:01 MYSENSORS_DEVICE MYSENSOR_100 parentId: 0
2016-01-05 09:10:03 MYSENSORS_DEVICE MYSENSOR_100 SKETCH_NAME: Light Lux Sensor
2016-01-05 09:10:03 MYSENSORS_DEVICE MYSENSOR_100 SKETCH_VERSION: 1.0
2016-01-05 09:10:03 MYSENSORS_DEVICE MYSENSOR_100 brightness: 114


Reading:
Readings:
     2016-01-05 09:10:03   SKETCH_NAME     Light Lux Sensor
     2016-01-05 09:10:03   SKETCH_VERSION  1.0
     2016-01-05 09:10:03   brightness      114
     2016-01-05 09:10:01   parentId        0


Jedoch nach ein paar Messwerten bekommt das FHEM irgendwie das mit den Messwerten nicht mehr hin:
Serial-Monitor Sensor:
112
send: 100-100-0-0 s=0,c=1,t=23,pt=3,l=2,sg=0,st=ok:112
113
send: 100-100-0-0 s=0,c=1,t=23,pt=3,l=2,sg=0,st=ok:113
113
114
send: 100-100-0-0 s=0,c=1,t=23,pt=3,l=2,sg=0,st=ok:114


Eventlog:
2016-01-05 09:10:36 MYSENSORS_DEVICE MYSENSOR_100 brightness: 112
2016-01-05 09:11:09 MYSENSORS_DEVICE MYSENSOR_100 brightness: 113
2016-01-05 09:12:04 MYSENSORS_DEVICE MYSENSOR_1 humidity: 39.4
2016-01-05 09:12:16 MYSENSORS_DEVICE MYSENSOR_100 brightness: 1107296370
2016-01-05 09:12:49 MYSENSORS_DEVICE MYSENSOR_100 brightness: 1107296369


Readings:
Readings:
     2016-01-05 09:10:03   SKETCH_NAME     Light Lux Sensor
     2016-01-05 09:10:03   SKETCH_VERSION  1.0
     2016-01-05 09:12:49   brightness      1107296369
     2016-01-05 09:10:01   parentId        0


Erst durch ein Restart des Sensors bekommt das FHEM wieder entsprechende Daten. Aber auch nur 2-3 Messwerte. Es sieht aber so aus, als sende der Sensor korrekte Messwerte.

Meine Device-Config:
Internals:
   CFGFN      /opt/fhem/mycfg/62_sensors.cfg
   DEF        100
   IODev      XX_mysensors_wlan
   I_SKETCH_NAME Light Lux Sensor
   I_SKETCH_VERSION 1.0
   NAME       MYSENSOR_100
   NR         933
   STATE      ???
   TYPE       MYSENSORS_DEVICE
   ack        0
   protocol   1.5.1
   radioId    100
   repeater   0
   Readings:
     2016-01-05 09:00:29   SKETCH_NAME     Light Lux Sensor
     2016-01-05 09:00:29   SKETCH_VERSION  1.0
     2016-01-05 09:02:42   brightness      1107296367
     2016-01-05 09:00:27   parentId        0

   Attributes:
      IODev      XX_mysensors_wlan
      group      mySensors
      mapReading_brightness 0 brightness
      mapReading_level 0 level
      mode       node
      room       MySensors
      verbose    5
      version    1.5.1


Hat jemand einen Rat?

Greets
Tom

Anm: habe noch heute noch einen Distanzmesser hinzugefügt. Auch dort das Phänomen:
Sensordaten:
sensor started, id=101, parent=0, distance=1
send: 101-101-0-0 s=255,c=3,t=11,pt=0,l=15,sg=0,st=ok:Distance Sensor
send: 101-101-0-0 s=255,c=3,t=12,pt=0,l=3,sg=0,st=ok:1.0
send: 101-101-0-0 s=1,c=0,t=15,pt=0,l=0,sg=0,st=ok:
Ping: 6 cm
send: 101-101-0-0 s=1,c=1,t=13,pt=2,l=2,sg=0,st=ok:6
Ping: 25 cm
send: 101-101-0-0 s=1,c=1,t=13,pt=2,l=2,sg=0,st=ok:25
Ping: 66 cm
send: 101-101-0-0 s=1,c=1,t=13,pt=2,l=2,sg=0,st=ok:66
Ping: 15 cm
send: 101-101-0-0 s=1,c=1,t=13,pt=2,l=2,sg=0,st=ok:15
Ping: 10 cm
send: 101-101-0-0 s=1,c=1,t=13,pt=2,l=2,sg=0,st=ok:10
Ping: 0 cm
send: 101-101-0-0 s=1,c=1,t=13,pt=2,l=2,sg=0,st=ok:0
Ping: 69 cm
send: 101-101-0-0 s=1,c=1,t=13,pt=2,l=2,sg=0,st=ok:69
Ping: 121 cm
send: 101-101-0-0 s=1,c=1,t=13,pt=2,l=2,sg=0,st=ok:121
Ping: 208 cm
send: 101-101-0-0 s=1,c=1,t=13,pt=2,l=2,sg=0,st=ok:208
Ping: 219 cm
send: 101-101-0-0 s=1,c=1,t=13,pt=2,l=2,sg=0,st=ok:219
Ping: 63 cm
send: 101-101-0-0 s=1,c=1,t=13,pt=2,l=2,sg=0,st=ok:63
Ping: 140 cm
send: 101-101-0-0 s=1,c=1,t=13,pt=2,l=2,sg=0,st=ok:140
Ping: 0 cm
send: 101-101-0-0 s=1,c=1,t=13,pt=2,l=2,sg=0,st=ok:0
Ping: 141 cm
send: 101-101-0-0 s=1,c=1,t=13,pt=2,l=2,sg=0,st=ok:141
Ping: 107 cm
send: 101-101-0-0 s=1,c=1,t=13,pt=2,l=2,sg=0,st=ok:107
Ping: 106 cm
send: 101-101-0-0 s=1,c=1,t=13,pt=2,l=2,sg=0,st=ok:106
Ping: 56 cm
send: 101-101-0-0 s=1,c=1,t=13,pt=2,l=2,sg=0,st=ok:56
Ping: 41 cm
send: 101-101-0-0 s=1,c=1,t=13,pt=2,l=2,sg=0,st=ok:41
Ping: 47 cm
send: 101-101-0-0 s=1,c=1,t=13,pt=2,l=2,sg=0,st=ok:47
Ping: 39 cm
send: 101-101-0-0 s=1,c=1,t=13,pt=2,l=2,sg=0,st=ok:39
Ping: 6 cm
send: 101-101-0-0 s=1,c=1,t=13,pt=2,l=2,sg=0,st=ok:6
Ping: 6 cm
Ping: 6 cm
Ping: 6 cm


Im Enventlog:
2016-01-06 20:08:11 Global global ATTR MYSENSOR_101 mode node
2016-01-06 20:08:11 Global global ATTR MYSENSOR_101 version 1.5.1
2016-01-06 20:08:11 MYSENSORS_DEVICE MYSENSOR_101 parentId: 0
2016-01-06 20:08:13 MYSENSORS_DEVICE MYSENSOR_101 SKETCH_NAME: Distance Sensor
2016-01-06 20:08:13 MYSENSORS_DEVICE MYSENSOR_101 SKETCH_VERSION: 1.0
2016-01-06 20:08:13 MYSENSORS_DEVICE MYSENSOR_101 distance1: 6
2016-01-06 20:08:19 MYSENSORS_DEVICE MYSENSOR_101 distance1: 25
2016-01-06 20:08:24 MYSENSORS_DEVICE MYSENSOR_101 distance1: 66
2016-01-06 20:08:30 MYSENSORS_DEVICE MYSENSOR_101 distance1: 15
2016-01-06 20:08:35 MYSENSORS_DEVICE MYSENSOR_101 distance1: 10
2016-01-06 20:08:41 MYSENSORS_DEVICE MYSENSOR_101 distance1: 0
2016-01-06 20:08:47 MYSENSORS_DEVICE MYSENSOR_101 distance1: 69
2016-01-06 20:08:52 MYSENSORS_DEVICE MYSENSOR_101 distance1: 121
2016-01-06 20:08:58 MYSENSORS_DEVICE MYSENSOR_101 distance1: 208
2016-01-06 20:09:03 MYSENSORS_DEVICE MYSENSOR_101 distance1: 219
2016-01-06 20:09:09 MYSENSORS_DEVICE MYSENSOR_101 distance1: 63
2016-01-06 20:09:14 MYSENSORS_DEVICE MYSENSOR_101 distance1: 140
2016-01-06 20:09:20 MYSENSORS_DEVICE MYSENSOR_101 distance1: 0
2016-01-06 20:09:26 MYSENSORS_DEVICE MYSENSOR_101 distance1: 141
2016-01-06 20:09:31 MYSENSORS_DEVICE MYSENSOR_101 distance1: 107
2016-01-06 20:09:37 MYSENSORS_DEVICE MYSENSOR_101 distance1: 106
2016-01-06 20:09:42 MYSENSORS_DEVICE MYSENSOR_101 distance1: 56
2016-01-06 20:09:48 MYSENSORS_DEVICE MYSENSOR_101 distance1: 41
2016-01-06 20:09:53 MYSENSORS_DEVICE MYSENSOR_101 distance1: 47
2016-01-06 20:09:59 MYSENSORS_DEVICE MYSENSOR_101 distance1: 39
2016-01-06 20:10:04 MYSENSORS_DEVICE MYSENSOR_101 distance1: 1107296262


Was mir noch auffällt sind die "fast" gleichen Fehlwerte.
RPi2: FHEM 5.8 mit Jeelink (ATTiny) und AliRF (PIR's)
KNX/EIB: alix3d3 als IP-GW, div. Sensoren und Aktoren (Licht, Jalousien und Markisen)
Mysensors: Temp/Hum/Lux-Sensoren, PIR's, Türkontakte,
verschiedene RGB-Aktoren, Vantage 2, Fritzbox, Vu+ Duo

Kuzl

Hallo, hier das gleiche mit einem DHT22-Sensor.

Es wird bei neustart des Sensors einmalig die Temperatur übernommen und anschließend wird zwar das Senden des Sensors erkannt, allerdings wieder mit dem gleichen Wert wie davor. Hab den dann anschließend rausgetragen und glab nicht, dass es draußen grade 20° hat :D

Peter_64

Zitat von: Kuzl am 08 Januar 2016, 10:53:58
Hallo, hier das gleiche mit einem DHT22-Sensor.

Es wird bei neustart des Sensors einmalig die Temperatur übernommen und anschließend wird zwar das Senden des Sensors erkannt, allerdings wieder mit dem gleichen Wert wie davor. Hab den dann anschließend rausgetragen und glab nicht, dass es draußen grade 20° hat :D
Hallo,
habe auch das Problem, beim auswerten eines  Analog Ports. Denke aber es liegt am Sketch muss noch probieren. Da ich einige Multisensoren mit Sketch von Alex am laufen habe, bei denen gibt es keine Probleme.

schka17

Ich habe dieses Problem auch mit einem Sensebender board, Temperatur und battery wird richtig dargestellt, Humidity habe ich immer solche unwahrscheinlichen Werte wie z.b. 1090519074.

Den Sensor habe ich über die serielle ausgelesen, dieser sendet die richtigen Werte.

Das mit dem resetten des gateways bringt auch nichts mehr, hatte es aber ganz zu Beginn. Leider streikt mein serielles USB Gateway auch, deswegen konnte ich noch nicht überprüfen was wirklich gefunkt wird, aber ich habe stark das gateway in Verdacht.



Sent from my iPad using Tapatalk
M: Thinclient x64 Debian | CUL FS20, HMS100WD, HMS100TF, HMS100T, HMS100CO, S300, S555TH | OWServer DS1420, DS18B20, DS2408 | RFXCOM UVN128, THWR800, THGR228N,RTGR328, PCR800 |Jeelink PCA301 EC3000|CUNO+IR|HMLAN|HMUSB|CUL433 Somfy|mySensors|espEasy
S1:Raspberry mit BPM810, Jeelink EC3000

gloob

Ich nutze auch die Sensebender.
Ich habe einen Sensebender am Raspberry Pi als Gateway in Betrieb und mit dem aktuellen MySensors Stand in FHEM funktioniert alles ohne Probleme. Humidity, Temperatur und Batterielevel werden korrekt gesendet, empfangen und dargestellt.
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