Any plan to implement Ethernet GW?
-
Ugh, forgot to run the checkout command. palm smacks head
Booting now, will report back in a minute if it is working or not.
Don't forget to use the correct ip address of your gateway in your network.
-
It works! Found my motion sensor with ease. Will start adding lights now shortly
Thanks again, loving this.
EDIT: Quick question: To autostart this, would I just use the normal Home-Assistant instructions in the virtualenv, or is there another method to do it?
-
It works! Found my motion sensor with ease. Will start adding lights now shortly
Thanks again, loving this.
EDIT: Quick question: To autostart this, would I just use the normal Home-Assistant instructions in the virtualenv, or is there another method to do it?
:thumbsup:
When you have time, can you run
git logand tell me the top commit message, so I know which version you are using.Regarding autostart, no I don't think you can use the normal instructions together with the virtualenv. You could write a script, that changes to the virtualenv and starts hass, and run that script at login or similar.
If you don't have another production install of home assistant on the computer, you can skip the virtualenv alltogether and just do:
pip3 install --user "https://github.com/MartinHjelmare/home-assistant/archive/mysensors-tcp-gateway.zip"or if you want to install as root:
sudo pip3 install "https://github.com/MartinHjelmare/home-assistant/archive/mysensors-tcp-gateway.zip"This way you should be able to autostart the usual way, per instructions on the web.
But then if you want to test an update from me, you have to make sure you uninstall everything correctly and manually remove ~/.homeassistant/lib before you install again.
-
Here is the info you requested:
commit d07f8097a6186611371b8bc918fcb0d436bb39ba Author: MartinHjelmare <marhje52@kth.se> Date: Sat Feb 27 04:55:38 2016 +0100 Add mysensors tcp ethernet gateway * Replace CONF_PORT with CONF_DEVICE and ATTR_PORT with ATTR_DEVICE. * Add tcp_port in config. * Use fork pymysensors repo, temporarily. * Try to guess if tcp or serial gateway is configured, by validating device name as an ip address. If successful setup tcp gateway, if it fails, setup serial gateway. * Update device_state_attributes to show correct device, ethernet or serial. commit 278fdc0983a8528945e13cf912da82f3bc5fe14c Merge: 6dc49df 8ffa368 Author: Daniel Høyer Iversen <daniel.h.iversen@ntnu.no> Date: Fri Feb 26 10:49:10 2016 +0100 Merge pull request #1385 from balloob/rfxtrx improve rfxtrx sensor : -
Here is the info you requested:
commit d07f8097a6186611371b8bc918fcb0d436bb39ba Author: MartinHjelmare <marhje52@kth.se> Date: Sat Feb 27 04:55:38 2016 +0100 Add mysensors tcp ethernet gateway * Replace CONF_PORT with CONF_DEVICE and ATTR_PORT with ATTR_DEVICE. * Add tcp_port in config. * Use fork pymysensors repo, temporarily. * Try to guess if tcp or serial gateway is configured, by validating device name as an ip address. If successful setup tcp gateway, if it fails, setup serial gateway. * Update device_state_attributes to show correct device, ethernet or serial. commit 278fdc0983a8528945e13cf912da82f3bc5fe14c Merge: 6dc49df 8ffa368 Author: Daniel Høyer Iversen <daniel.h.iversen@ntnu.no> Date: Fri Feb 26 10:49:10 2016 +0100 Merge pull request #1385 from balloob/rfxtrx improve rfxtrx sensor :Sorry, I forgot I've only updated the pymysensors project, so you checking the home-assistant git log is no use. Well, I think your're running the lastest version anyway, since you got it working just now. Everything should be ok.
Let me know if you experience any problems.
If everything seems ok for you after some time of testing, I don't see why we can't release this very soon. My limited testing after the lastest update, show no problems.
-
Hey @martinhjelmare,
I finally got this working.
I'm doing tests with a couple of multi-sensors (Temp, Hum, Light & motion). The discovery worked very well, no issue at all after following all the above steps.
What I'm not seeing wotking are the updates. I always see the same values. I'm checking messages with MYSController and I see the GW is receiving the events and updates but I can't see new values showing in the portal.
Still testing ...
-
Hey @martinhjelmare,
I finally got this working.
I'm doing tests with a couple of multi-sensors (Temp, Hum, Light & motion). The discovery worked very well, no issue at all after following all the above steps.
What I'm not seeing wotking are the updates. I always see the same values. I'm checking messages with MYSController and I see the GW is receiving the events and updates but I can't see new values showing in the portal.
Still testing ...
Do you mean that the sensors are not showing the latest values in the gui?
If the last value from a sensor is the same as the previous value, a state change won't happen. So the value will be reported as being as old as the previous value. Could this explain what you see?
-
actually, I just got it working ...
yes, I was referrring to that. The way I have built the sensor is that everytime a movement is detected is sending all sensors statuses to the GW. This sensors are designed to be plugged (no battery powered) so no concern on power consumption.
I restarted the server and now updates are working.
What I'm seeing in the log is constantly this message:
16-03-14 10:39:53 INFO (Thread-9) [mysensors.mysensors] Permission denied when writing to /home/pi/dev/home-assistant/path/mysensors3.jsonIf I'm not wrong this is the persistence.
Apart of this I now see updates coming in ...
-
Good!
The path to the persistence file must exist, not the file itself, but the directory tree above, and hass should have write permission to it.
I usually put the file in the same directory as configuration.yml.
-
Ok, couple of things that I'm seeing now.
-
Everytime I restart the server the MySensor nodes are no longer in the system. I have to restart them to get them in again. All of them are in the persistence file.
-
Now i can only have 1 node added.
While in the persistence file I see multiple nodes, once I add one of them I can't add anymore. No error if fired (at least not that I've seen).
-
-
Ok, couple of things that I'm seeing now.
-
Everytime I restart the server the MySensor nodes are no longer in the system. I have to restart them to get them in again. All of them are in the persistence file.
-
Now i can only have 1 node added.
While in the persistence file I see multiple nodes, once I add one of them I can't add anymore. No error if fired (at least not that I've seen).
Can you attach the persistence file here and post your config, and I'll take a look?
-
-
Sure!
Consistence file:
{"156": {"sketch_version": null, "children": {}, "battery_level": 0, "sketch_name": null, "type": 17, "sensor_id": 156}, "102": {"sketch_version": null, "children": {}, "battery_level": 0, "sketch_name": null, "type": 17, "sensor_id": 102}}the Configuration is very light. Actually is the by default config and i just added this to test MySensors:
mysensors: gateways: - device: 192.168.1.X persistence_file: '/home/pi/.homeassistant/MSPersistence.json' tcp_port: 5003 debug: true persistence: true version: '1.5'let me know if you need anything else.
-
In the persistence file I can see two issues.
Sketch name is null for both nodes.
Both nodes don't have any children.Are you using a non default example sketch, if so can you post it?
-
hey Martin,
that's correct, those are the 2 items I saw that was little curious about.
The sketch I'm using, while custom, is a mix of different sketches that can be found in the MySensors page.
As you'll see below, each node (which are identical) have all the information (Sketch name, version, etc). And all of them have 4 childs:
- Ambient Humidity
- Ambient Temperature
- Ambient Light
- Movement (Motion Sensor Trip).But I might have something wrong so ... happy to learn! :)
#include <SPI.h> #include <MySensor.h> #include <DHT.h> #define NODE_ID 102 #define SKETCH_NAME "dyaSensor (HTLM) v1.2" #define SKETCH_VERSION "1.2" #define CHILD_ID_HUM 0 #define CHILD_ID_TEMP 1 #define CHILD_ID_LIGHT 2 #define CHILD_ID_MOV 3 #define HUMIDITY_SENSOR_DIGITAL_PIN 4 #define DIGITAL_INPUT_SENSOR 3 // The digital input you attached your motion sensor. (Only 2 and 3 generates interrupt!) #define INTERRUPT DIGITAL_INPUT_SENSOR-2 // Usually the interrupt = pin -2 (on uno/nano anyway) #define LIGHT_SENSOR_ANALOG_PIN 0 #defin TEMP_CORRECTION 2 unsigned long SLEEP_TIME = 1000; // Sleep time between reads (in milliseconds) MySensor gw; DHT dht; float lastTemp; float lastHum; int lastLightLevel; boolean metric = true; //Building Messages MyMessage msgHum(CHILD_ID_HUM, V_HUM); // Initialize humidity message MyMessage msgTemp(CHILD_ID_TEMP, V_TEMP); // Initialize temperature message MyMessage msgLum(CHILD_ID_LIGHT, V_LIGHT_LEVEL); // Initialize Light message MyMessage msgMov(CHILD_ID_MOV, V_TRIPPED); // Initialize motion message void setup() { gw.begin(NULL, NODE_ID, false); dht.setup(HUMIDITY_SENSOR_DIGITAL_PIN); // Send the Sketch Version Information to the Gateway gw.sendSketchInfo(SKETCH_NAME, SKETCH_VERSION); pinMode(DIGITAL_INPUT_SENSOR, INPUT); // sets the motion sensor digital pin as input // Register all sensors to gw (they will be created as child devices) Serial.println("Presenting Humidity Sensor"); gw.present(CHILD_ID_HUM, S_HUM, "Humidity Sensor"); Serial.println("Presenting Temperature Sensor"); gw.present(CHILD_ID_TEMP, S_TEMP, "Temperature Sensor"); Serial.println("Light Level Sensor"); gw.present(CHILD_ID_LIGHT, S_LIGHT_LEVEL, "Light Level Sensor"); Serial.println("Presenting Motion Sensor"); gw.present(CHILD_ID_MOV, S_MOTION, "Motion Sensor"); metric = gw.getConfig().isMetric; } void loop() { // By calling process() you route messages in the background gw.process(); delay(dht.getMinimumSamplingPeriod()); float temperature = dht.getTemperature()-TEMP_CORRECTION; if (isnan(temperature)) { Serial.println("Failed reading temperature from DHT"); } else if (temperature != lastTemp) { lastTemp = temperature; if (!metric) { temperature = dht.toFahrenheit(temperature); } gw.send(msgTemp.set(temperature, 1)); Serial.print("- T: "); Serial.println(temperature); } float humidity = dht.getHumidity(); if (isnan(humidity)) { Serial.println("Failed reading humidity from DHT"); } else if (humidity != lastHum) { lastHum = humidity; gw.send(msgHum.set(humidity, 1)); Serial.print("- H: "); Serial.println(humidity); } int lightLevel = (1023-analogRead(LIGHT_SENSOR_ANALOG_PIN))/10.23; if (lightLevel != lastLightLevel) { lastLightLevel = lightLevel; gw.send(msgLum.set(lightLevel)); Serial.print("- L: "); Serial.println(lightLevel); } // Read digital motion value boolean tripped = digitalRead(DIGITAL_INPUT_SENSOR) == HIGH; gw.send(msgMov.set(tripped?"1":"0")); // Send tripped value to gw Serial.println(tripped?"- Movement Detected":"- No Movement Detected"); gw.sleep(INTERRUPT,CHANGE, SLEEP_TIME); } -
:thumbsup:
When you have time, can you run
git logand tell me the top commit message, so I know which version you are using.Regarding autostart, no I don't think you can use the normal instructions together with the virtualenv. You could write a script, that changes to the virtualenv and starts hass, and run that script at login or similar.
If you don't have another production install of home assistant on the computer, you can skip the virtualenv alltogether and just do:
pip3 install --user "https://github.com/MartinHjelmare/home-assistant/archive/mysensors-tcp-gateway.zip"or if you want to install as root:
sudo pip3 install "https://github.com/MartinHjelmare/home-assistant/archive/mysensors-tcp-gateway.zip"This way you should be able to autostart the usual way, per instructions on the web.
But then if you want to test an update from me, you have to make sure you uninstall everything correctly and manually remove ~/.homeassistant/lib before you install again.
Hey @martinhjelmare
Does the above reply to @drock1985 means that I can do a basic installation as per https://home-assistant.io/
pip3 install homeassistant hass --open-uifollowed by
sudo pip3 install "https://github.com/MartinHjelmare/home-assistant/archive/mysensors-tcp-gateway.zip"and will have a valid testing env without going into all the above steps of creating a virtualenv??
If so I'd rather more this avenue because I can clean up everything with a new installation, install the zip and have a new testing env in minutes :)
-
Hey @martinhjelmare
Does the above reply to @drock1985 means that I can do a basic installation as per https://home-assistant.io/
pip3 install homeassistant hass --open-uifollowed by
sudo pip3 install "https://github.com/MartinHjelmare/home-assistant/archive/mysensors-tcp-gateway.zip"and will have a valid testing env without going into all the above steps of creating a virtualenv??
If so I'd rather more this avenue because I can clean up everything with a new installation, install the zip and have a new testing env in minutes :)
I can't see any big issues with your sketch, just one small:
I guess this is a typo:
#defin TEMP_CORRECTION 2Since your sketch looks ok, I think something must have gone wrong with the communication between node and gateway. Have you been monitoring the comm, with a serial monitor, on the node side for example, to make sure all messages are sent ok?
-
Hey @martinhjelmare
Does the above reply to @drock1985 means that I can do a basic installation as per https://home-assistant.io/
pip3 install homeassistant hass --open-uifollowed by
sudo pip3 install "https://github.com/MartinHjelmare/home-assistant/archive/mysensors-tcp-gateway.zip"and will have a valid testing env without going into all the above steps of creating a virtualenv??
If so I'd rather more this avenue because I can clean up everything with a new installation, install the zip and have a new testing env in minutes :)
The zip file you install from my github account, is the mysensors tcp gateway branch of home-assistant. So you shouldn't install home-assistant first, if you're going to install my branch.
If you don't have any other version of home-assistant that you wish to keep, on the same computer, you can install my branch directly. You just have to make sure you uninstall it and remove
~/.homeassistant/libbefore installing an update from me, if I commit some updates.Yeah, setting up a dev machine can be a hassle the first time, and not so useful if you're not developing with it.
-
I can't see any big issues with your sketch, just one small:
I guess this is a typo:
#defin TEMP_CORRECTION 2Since your sketch looks ok, I think something must have gone wrong with the communication between node and gateway. Have you been monitoring the comm, with a serial monitor, on the node side for example, to make sure all messages are sent ok?
thanks for the hint ... definetly a typo :$
Yes, I'm monitoring the GW with MYSController as my GW is ethernet and I see all messages showing with no issue. But, I'll be happy to review again. :)
-
thanks for the hint ... definetly a typo :$
Yes, I'm monitoring the GW with MYSController as my GW is ethernet and I see all messages showing with no issue. But, I'll be happy to review again. :)
Yes, please start from the beginning:
Remove the persistence file
Start hass
Wait until you see that hass has (:smile:) connected to the gateway
Start a node
Start the next nodeIf you can post the serial log from that here, and also the log from hass, that would be great.
-
Haven't had any issues with the sensors I have on my Dev unit; so far so good.
Are you thinking of releasing the ethernet GW code in this weeks update?