Code for beta-testing?
-
Hi!
I'm willing to help you out with beta testing the Raspberry code. :-)
I'm interested in MySensors working together with Domoticz ASAP and it may be the first step. :-)Regards
-
@andriej (I guess it the same andriej) suggested that to me, on my github account, after finding my first version of my python gw running on Raspberry with a Andruion connected.I did some quick hack yesterday and manged to get my python gw to send the info from a DHT11->Arduino (nano)->RF24->RF24->Arduino (Uno)->Raspberry to Domoticz using a dummy devices in Domoticz and the json API. Could say that I'm not thrilled by the Domoticz API implemantion or API documentation. For some reason the dummy humdity device doesn't create grapth even if it gets the data.
Anyway so it can be done. Now over to the boring part, This was done on an earlier version (2014-01-17) of the MySensor system. Today when I tried mearge the code to work with the latest version, my DHT connected arduino doesn't send anything. and I can't get it to write to the serial port to figure out what's wrong. Hopfully I will be able to find some time to resolve this during the week/weekend and publish something that could be worked on.
WB
-
So it's time to start learning python, I guess. ;-)
(I've written some basics scripts ages ago.)I'll help whenever I will be able to.
@wannabee - have you tried starting node with gw.begin(some_number)?
@andriej Yes, tested that, Even if the python gw handles to assign RAIDO_ID. Also cleared the EEPROM to be sure it didn't conflict between the versions. The interesting part is that it doens't even write to the serial line. Time to sleep and see if I cand find a few hours on Wednesday to get it working again.
-
@andriej Yes, tested that, Even if the python gw handles to assign RAIDO_ID. Also cleared the EEPROM to be sure it didn't conflict between the versions. The interesting part is that it doens't even write to the serial line. Time to sleep and see if I cand find a few hours on Wednesday to get it working again.
@andriej
Hi, I had problem using the main branch mysensors/Raspberry, that because of the bit-field struct (header_s) in Sensor.h They will get packed in different order on the arduino compared to the RPi (at least with my compiler, gcc). In order to fix this I created the 1.4dev branch. It uses full bytes instead of the bit-fields, but you need (of cause) to compile both the sensors (arduino) and the gateway (RPi) using the 1.4dev branch.We need to fix this in the main branch later on (and use the same files as in mysensors/Arduino/libraries/MySensors)
-
@andriej
Hi, I had problem using the main branch mysensors/Raspberry, that because of the bit-field struct (header_s) in Sensor.h They will get packed in different order on the arduino compared to the RPi (at least with my compiler, gcc). In order to fix this I created the 1.4dev branch. It uses full bytes instead of the bit-fields, but you need (of cause) to compile both the sensors (arduino) and the gateway (RPi) using the 1.4dev branch.We need to fix this in the main branch later on (and use the same files as in mysensors/Arduino/libraries/MySensors)
@jka I can't (or I don't know how) to compile the 1.4-dev code. I've tried everything I guess.
$ make RadioGateway make -C librf24 make[1]: Wejście do katalogu `/home/pi/mysensors/Raspberry-1.4dev/librf24' g++ -shared -Wl,-soname,librf24.so.1 -Ofast -mfpu=vfp -mfloat-abi=hard -march=armv6zk -mtune=arm1176jzf-s -o librf24.so.1 compatibility.o gpio.o spi.o RF24.o make[1]: Opuszczenie katalogu `/home/pi/mysensors/Raspberry-1.4dev/librf24' make -C /home/pi/mysensors/libraries/MySensors make[1]: Wejście do katalogu `/home/pi/mysensors/libraries/MySensors' make[1]: Nie ma nic do zrobienia w `all'. make[1]: Opuszczenie katalogu `/home/pi/mysensors/libraries/MySensors' g++ -o RadioGateway RadioGateway.o -Wall -Ofast -mfpu=vfp -DDEBUG -DRPI -mfloat-abi=hard -march=armv6zk -mtune=arm1176jzf-s -I./librf24 -I/home/pi/mysensors/libraries/MySensors /home/pi/mysensors/libraries/MySensors/Gateway.o /home/pi/mysensors/libraries/MySensors/Relay.o /home/pi/mysensors/libraries/MySensors/Sensor.o ./librf24/librf24.so.1 RadioGateway.o: In function `main': /home/pi/mysensors/Raspberry-1.4dev/RadioGateway.cpp:103: undefined reference to `Gateway::begin(unsigned char)' collect2: error: ld returned 1 exit status make: *** [RadioGateway] Błąd 1 pi@domoticzpi ~/mysensors/Raspberry-1.4dev $ -
@jka I can't (or I don't know how) to compile the 1.4-dev code. I've tried everything I guess.
$ make RadioGateway make -C librf24 make[1]: Wejście do katalogu `/home/pi/mysensors/Raspberry-1.4dev/librf24' g++ -shared -Wl,-soname,librf24.so.1 -Ofast -mfpu=vfp -mfloat-abi=hard -march=armv6zk -mtune=arm1176jzf-s -o librf24.so.1 compatibility.o gpio.o spi.o RF24.o make[1]: Opuszczenie katalogu `/home/pi/mysensors/Raspberry-1.4dev/librf24' make -C /home/pi/mysensors/libraries/MySensors make[1]: Wejście do katalogu `/home/pi/mysensors/libraries/MySensors' make[1]: Nie ma nic do zrobienia w `all'. make[1]: Opuszczenie katalogu `/home/pi/mysensors/libraries/MySensors' g++ -o RadioGateway RadioGateway.o -Wall -Ofast -mfpu=vfp -DDEBUG -DRPI -mfloat-abi=hard -march=armv6zk -mtune=arm1176jzf-s -I./librf24 -I/home/pi/mysensors/libraries/MySensors /home/pi/mysensors/libraries/MySensors/Gateway.o /home/pi/mysensors/libraries/MySensors/Relay.o /home/pi/mysensors/libraries/MySensors/Sensor.o ./librf24/librf24.so.1 RadioGateway.o: In function `main': /home/pi/mysensors/Raspberry-1.4dev/RadioGateway.cpp:103: undefined reference to `Gateway::begin(unsigned char)' collect2: error: ld returned 1 exit status make: *** [RadioGateway] Błąd 1 pi@domoticzpi ~/mysensors/Raspberry-1.4dev $ -
@jka
I seem to have new problem then, guess it's with g++?pi@domoticzpi ~/mysensors/Raspberry $ make make -C librf24 make[1]: Wejście do katalogu `/home/pi/mysensors/Raspberry/librf24' g++ -Wall -fPIC -Ofast -mfpu=vfp -mfloat-abi=hard -march=armv6zk -mtune=arm1176jzf-s -c RF24.cpp In file included from /usr/include/unistd.h:203:0, from spi.h:13, from RF24_config.h:23, from RF24.cpp:10: /usr/include/arm-linux-gnueabihf/bits/posix_opt.h:131:3: error: #error "Never use <bits/syscall.h> directly; include <sys/syscall.h> instead." /usr/include/arm-linux-gnueabihf/bits/posix_opt.h:20:0: error: unterminated #ifndef In file included from RF24.cpp:11:0: RF24.h: In constructor ‘RF24::RF24(std::string, uint32_t, uint8_t)’: RF24.h:52:12: warning: ‘RF24::spispeed’ will be initialized after [-Wreorder] RF24.h:50:11: warning: ‘uint8_t RF24::ce_pin’ [-Wreorder] RF24.cpp:241:1: warning: when initialized here [-Wreorder] make[1]: *** [RF24.o] Błąd 1 make[1]: Opuszczenie katalogu `/home/pi/mysensors/Raspberry/librf24' make: *** [RF24] Błąd 2 pi@domoticzpi ~/mysensors/Raspberry $ -
dont know if this should be on new subject but spare me this one
i recompiled both arduino and rpi part with 1.4 branch
but i get on the RPi side CRC errors
Starting Gateway...
Sensor-1Gateway created...
SPI device = /dev/spidev0.0
SPI speed = 8000000
CE GPIO = 25
STATUS = 0x0e RX_DR=0 TX_DS=0 MAX_RT=0 RX_P_NO=7 TX_FULL=0
RX_ADDR_P0-1 \0 = 0xabcdabc000 0xabcdabc000
RX_ADDR_P2-5 \0 = 0xff 0xc4 0xc5 0xc6
TX_ADDR = 0xabcdabc000
RX_PW_P0-6 \0 = 0x20 0x20 0x20 0x00 0x00 0x00
EN_AA = 0x3f
EN_RXADDR \0 = 0x07
RF_CH = 0x4c
RF_SETUP \0 = 0x07
CONFIG = 0x0f
DYNPD/FEATURE \0 = 0x3f 0x04
Data Rate = 1MBPS
Model = nRF24L01+
CRC Length = 16 bits
PA Power = PA_MAX
Radio setup complete-0;0;4;11;Arduino startup complete.
Begin called
Dynamic payload size=12
Received: from=9, to=0, childId=255, mtype=0, type=17, crc=47, '1.4'
Message crc error.
header.type=17, header.to=0, radioId=0
Dynamic payload size=10
Received: from=9, to=0, childId=255, mtype=4, type=7, crc=115, '0'
Message crc error.
header.type=7, header.to=0, radioId=0
Dynamic payload size=12
Received: from=9, to=0, childId=0, mtype=0, type=7, crc=15, '1.4'
Message crc error.
header.type=7, header.to=0, radioId=0
Dynamic payload size=12
Received: from=9, to=0, childId=1, mtype=0, type=6, crc=187, '1.4'
Message crc error.
header.type=6, header.to=0, radioId=0
Dynamic payload size=13
Received: from=9, to=0, childId=1, mtype=1, type=0, crc=228, '20.5'
Message crc error.
header.type=0, header.to=0, radioId=0
Dynamic payload size=13
Received: from=9, to=0, childId=0, mtype=1, type=1, crc=118, '50.3'
Message crc error.while on the arduino just the failed send
Started sensor.
Relay=0, distance=1
Relaying message back to gateway.
Tx: fr=9,to=0,la=9,ne=0,ci=255,mt=0,ty=17,cr=47: 1.4
Send failed.
Relaying message back to gateway.
Tx: fr=9,to=0,la=9,ne=0,ci=255,mt=4,ty=7,cr=115: 0
Send failed.
Relaying message back to gateway.
Tx: fr=9,to=0,la=9,ne=0,ci=0,mt=0,ty=7,cr=15: 1.4
Send failed.
Relaying message back to gateway.
Tx: fr=9,to=0,la=9,ne=0,ci=1,mt=0,ty=6,cr=187: 1.4
Send failed.
Relaying message back to gateway.
Tx: fr=9,to=0,la=9,ne=0,ci=1,mt=1,ty=0,cr=228: 20.5
Send failed.
T: 20.50
Relaying message back to gateway.
Tx: fr=9,to=0,la=9,ne=0,ci=0,mt=1,ty=1,cr=118: 50.3
Send failed.
H: 50.30
Relaying message back to gateway.
Tx: fr=9,to=0,la=9,ne=0,ci=1,mt=1,ty=0,cr=195: 20.6
Send failed.
T: 20.60
Relaying message back to gateway.
Tx: fr=9,to=0,la=9,ne=0,ci=0,mt=1,ty=1,cr=81: 50.0
Send failed.
H: 50.00also changed the Data Rate = 1MBPS on arduino to match the RPI preet
any ideas?
thanx a mil
-
You are experiencing the problem @jka describes above. When the message header bitfield is packed (by the compiler) if differs on the Arduino and RPI which result in garbled header and CRC-check-errors.
We have to introduce our own bit manupilation when adding/extracting stuff from the (bit-field)-header to overcome this cross platform problems.
-
You are experiencing the problem @jka describes above. When the message header bitfield is packed (by the compiler) if differs on the Arduino and RPI which result in garbled header and CRC-check-errors.
We have to introduce our own bit manupilation when adding/extracting stuff from the (bit-field)-header to overcome this cross platform problems.
-
please excuse the frivolity
u mean like this both on arduino and Pi?
// The message structure
typedef struct {
unsigned char crc; // uint8_t crc; // 8 bits crc
unsigned char version; // (3 bits) protocol version
unsigned char binary; // (1 bit). Data is binary and should be encoded when sent to sensor net gateway
unsigned char from; // 8 bits. RadioId of sender node
unsigned char to; // 8 bits. RadioId of destination node
unsigned char last; // 8 bits. RadioId of last node this message passed
unsigned char childId; // 8 bits. Up to MAX_CHILD_DEVICES child sensors per radioId
unsigned char messageType; // (4 bits). Type of message. See messageType
unsigned char type; // 8 bits. variableType or deviceType depending on messageType
} header_s; -
please excuse the frivolity
u mean like this both on arduino and Pi?
// The message structure
typedef struct {
unsigned char crc; // uint8_t crc; // 8 bits crc
unsigned char version; // (3 bits) protocol version
unsigned char binary; // (1 bit). Data is binary and should be encoded when sent to sensor net gateway
unsigned char from; // 8 bits. RadioId of sender node
unsigned char to; // 8 bits. RadioId of destination node
unsigned char last; // 8 bits. RadioId of last node this message passed
unsigned char childId; // 8 bits. Up to MAX_CHILD_DEVICES child sensors per radioId
unsigned char messageType; // (4 bits). Type of message. See messageType
unsigned char type; // 8 bits. variableType or deviceType depending on messageType
} header_s; -
@andriej and @jendrush, I commited some code to my repository for the python gateway with half (oneway) Domoticz integration. It also support Openhab, The Openhab integarion is what I think I will integarate for my self and continue to develop. Domoticz needs provide a proper API that I can use without spending a lot of time trying to figure out how it works. My code is at https://github.com/wbcode/ham. You can try it out if you want. The installation part and configuration is missing a lot of instructions.
Will create my own thread for my gateway code when I have a name for it and I have spent the time to do a proper update to the wiki and better a presenation on what you cand do.
Please note that iit's not a full replacment for a Vera and it's my first time codeing python...
-
hi there,
nagging time ...did all that (unsigned char on both ends arduino and rpi) but all i get in my rpi is below
any ideas?!!
thanx
GStarting Gateway...
Sensor-1Gateway created...
SPI device = /dev/spidev0.0
SPI speed = 8000000
CE GPIO = 25
STATUS = 0x0e RX_DR=0 TX_DS=0 MAX_RT=0 RX_P_NO=7 TX_FULL=0
RX_ADDR_P0-1 \0 = 0xe7e7e7e7e7 0xc2c2c2c2c2
RX_ADDR_P2-5 \0 = 0xff 0xc4 0xc5 0xc6
TX_ADDR = 0xe7e7e7e7e7
RX_PW_P0-6 \0 = 0x00 0x00 0x20 0x00 0x00 0x00
EN_AA = 0x3f
EN_RXADDR \0 = 0x07
RF_CH = 0x4c
RF_SETUP \0 = 0x07
CONFIG = 0x0c
DYNPD/FEATURE \0 = 0x3f 0x04
Data Rate = 1MBPS
Model = nRF24L01+
CRC Length = 16 bits
PA Power = PA_MAX
Radio setup complete-0;0;4;11;Arduino startup complete.
Begin called
Dynamic payload size=11
Received: from=16, to=18, childId=0, mtype=50, type=49, crc=120, '.7'
Message crc error.
header.type=49, header.to=18, radioId=0
Dynamic payload size=11
Received: from=16, to=2, childId=1, mtype=54, type=53, crc=231, '.2'
Message crc error.
header.type=53, header.to=2, radioId=0 -
@andriej
Hi, I had problem using the main branch mysensors/Raspberry, that because of the bit-field struct (header_s) in Sensor.h They will get packed in different order on the arduino compared to the RPi (at least with my compiler, gcc). In order to fix this I created the 1.4dev branch. It uses full bytes instead of the bit-fields, but you need (of cause) to compile both the sensors (arduino) and the gateway (RPi) using the 1.4dev branch.We need to fix this in the main branch later on (and use the same files as in mysensors/Arduino/libraries/MySensors)