💬 Building a Raspberry Pi Gateway
-
@Christian-Simonsen If you are using the default build options for the RPi gateway, in MyController (Resources -> Add gateway) choose Ethernet for the type and enter your RPi ip address in the Host name field.
@Christian-Simonsen said:
I have a raspberry Pi 2 that I've installed MyController on. This works fine, I can access it via the browser. I have also wired up an NRF24L01+ module to the GPIO pins on the Raspberry Pi. And I have followed the steps under "install and build", which seem to have worked fine. I didn't make any changes to the conf file. However now Im stuck. How do I setup the Raspberry Pi with the NRF24L01+ as a gateway in the MyController Gateway setup page in Safari?
Thanks that did the trick
-
Hi,
Background: I have a raspberry Pi 2 that I've installed MyController on. This works fine, I can access it via the browser. I have also wired up an NRF24L01+ module to the GPIO pins on the Raspberry Pi. I have also set up the raspberry pi as a gateway in the MyController Gateway setup page in Safari. It found it and it seem to work.
However to my question. How do I know if the Raspberry Pi gateway with NRF24L01 work? How can I monitor what the Raspberry Pi gateway receive? Is there a similar way as the "Serial Monitor" that I use in the Arduino application, when accessing Arduino Uno via USB?
If there is I need to monitor this via OSX Terminal.
-
Today i tried to use the sketch Water Meter Pulse Sensor in mysGateway.cpp but i run into alot of errors, you have any idea?
mysGateway.cpp:
/** * The MySensors Arduino library handles the wireless radio link and protocol * between your home built sensors/actuators and HA controller of choice. * The sensors forms a self healing radio network with optional repeaters. Each * repeater and gateway builds a routing tables in EEPROM which keeps track of the * network topology allowing messages to be routed to nodes. * * Created by Marcelo Aquino <marceloaqno@gmail.org> * Copyleft (c) 2016, Marcelo Aquino * Full contributor list: https://github.com/mysensors/Arduino/graphs/contributors * * Documentation: http://www.mysensors.org * Support Forum: http://forum.mysensors.org * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * version 2 as published by the Free Software Foundation. */ #include <iostream> #include <cstdio> #include <unistd.h> // For more options run ./configure --help // Config file //#define MY_LINUX_CONFIG_FILE "/etc/mysensors.dat" // How many clients should be able to connect to this gateway (default 1) #define MY_GATEWAY_MAX_CLIENTS 10 // Serial config // Enable this if you are using an Arduino connected to the USB //#define MY_LINUX_SERIAL_PORT "/dev/ttyACM0" // Enable this if you need to connect to a controller running on the same device //#define MY_IS_SERIAL_PTY // Choose a symlink name for the PTY device //#define MY_LINUX_SERIAL_PTY "/dev/ttyMySensorsGateway" // Grant access to the specified system group for the serial device //#define MY_LINUX_SERIAL_GROUPNAME "tty" // MQTT options //#define MY_CONTROLLER_IP_ADDRESS 192, 168, 178, 68 //#define MY_PORT 1883 //#define MY_MQTT_CLIENT_ID "mysensors-1" //#define MY_MQTT_PUBLISH_TOPIC_PREFIX "mygateway1-out" //#define MY_MQTT_SUBSCRIBE_TOPIC_PREFIX "mygateway1-in" // Enable these if your MQTT broker requires usenrame/password //#define MY_MQTT_USER "username" //#define MY_MQTT_PASSWORD "password" // Flash leds on rx/tx/err //#define MY_DEFAULT_ERR_LED_PIN 12 // Error LED pin //#define MY_DEFAULT_RX_LED_PIN 16 // Receive LED pin //#define MY_DEFAULT_TX_LED_PIN 18 // Transmit LED pin // Inverse the blinking feature //#define MY_WITH_LEDS_BLINKING_INVERSE #include <MySensors.h> #define DIGITAL_INPUT_SENSOR 26 // The digital input you attached your sensor. (Only 2 and 3 generates interrupt!) #define PULSE_FACTOR 1000 // Nummber of blinks per m3 of your meter (One rotation/liter) #define SLEEP_MODE false // flowvalue can only be reported when sleep mode is false. #define MAX_FLOW 40 // Max flow (l/min) value to report. This filters outliers. #define CHILD_ID 1 // Id of the sensor child unsigned long SEND_FREQUENCY = 30000; // Minimum time between send (in milliseconds). We don't want to spam the gateway. MyMessage flowMsg(CHILD_ID,V_FLOW); MyMessage volumeMsg(CHILD_ID,V_VOLUME); MyMessage lastCounterMsg(CHILD_ID,V_VAR1); double ppl = ((double)PULSE_FACTOR)/1000; // Pulses per liter volatile unsigned long pulseCount = 0; volatile unsigned long lastBlink = 0; volatile double flow = 0; bool pcReceived = false; unsigned long oldPulseCount = 0; unsigned long newBlink = 0; double oldflow = 0; double volume =0; double oldvolume =0; unsigned long lastSend =0; unsigned long lastPulse =0; void onPulse() { if (!SLEEP_MODE) { unsigned long newBlink = micros(); unsigned long interval = newBlink-lastBlink; if (interval!=0) { lastPulse = millis(); if (interval<500000L) { // Sometimes we get interrupt on RISING, 500000 = 0.5sek debounce ( max 120 l/min) return; } flow = (60000000.0 /interval) / ppl; } lastBlink = newBlink; } pulseCount++; } void setup() { attachInterrupt(DIGITAL_INPUT_SENSOR, onPulse, FALLING); } void presentation() { // Present locally attached sensors here // Send the sketch version information to the gateway and Controller sendSketchInfo("Water Meter", "1.1"); // Register this device as Waterflow sensor present(CHILD_ID, S_WATER); } void loop() { // Send locally attached sensors data here unsigned long currentTime = millis(); // Only send values at a maximum frequency or woken up from sleep if (SLEEP_MODE || (currentTime - lastSend > SEND_FREQUENCY)) { lastSend=currentTime; if (!pcReceived) { //Last Pulsecount not yet received from controller, request it again request(CHILD_ID, V_VAR1); return; } if (!SLEEP_MODE && flow != oldflow) { oldflow = flow; Serial.print("l/min:"); Serial.println(flow); // Check that we dont get unresonable large flow value. // could hapen when long wraps or false interrupt triggered if (flow<((unsigned long)MAX_FLOW)) { send(flowMsg.set(flow, 2)); // Send flow value to gw } } // No Pulse count received in 2min if(currentTime - lastPulse > 120000){ flow = 0; } // Pulse count has changed if ((pulseCount != oldPulseCount)||(!SLEEP_MODE)) { oldPulseCount = pulseCount; Serial.print("pulsecount:"); Serial.println(pulseCount); send(lastCounterMsg.set(pulseCount)); // Send pulsecount value to gw in VAR1 double volume = ((double)pulseCount/((double)PULSE_FACTOR)); if ((volume != oldvolume)||(!SLEEP_MODE)) { oldvolume = volume; Serial.print("volume:"); Serial.println(volume, 3); send(volumeMsg.set(volume, 3)); // Send volume value to gw } } } if (SLEEP_MODE) { sleep(SEND_FREQUENCY); } }./configure --my-debug=enable --my-gateway=ethernet --my-radio=none --my-port=5003
[SECTION] Detecting target machine. [OK] machine detected: SoC=BCM2835, Type=RPi, CPU=armv6l, REV=000e. [OK] init system detected: systemd [SECTION] Saving configuration. [SECTION] Cleaning previous builds. [OK] Finished.make:
root@raspberrypi:/downloads/MySensors# make cc -I. -I./core -I./drivers/Linux -I./drivers/RPi -MMD -c -o drivers/Linux/log.o drivers/Linux/log.c g++ -DMY_GATEWAY_LINUX -DMY_DEBUG -march=armv6zk -mtune=arm1176jzf-s -mfpu=vfp -mfloat-abi=hard -DLINUX_ARCH_RASPBERRYPI -Ofast -g -Wall -Wextra -DMY_PORT=5003 -I. -I./core -I./drivers/Linux -I./drivers/RPi -MMD -c -o drivers/Linux/noniso.o drivers/Linux/noniso.cpp g++ -DMY_GATEWAY_LINUX -DMY_DEBUG -march=armv6zk -mtune=arm1176jzf-s -mfpu=vfp -mfloat-abi=hard -DLINUX_ARCH_RASPBERRYPI -Ofast -g -Wall -Wextra -DMY_PORT=5003 -I. -I./core -I./drivers/Linux -I./drivers/RPi -MMD -c -o drivers/Linux/Print.o drivers/Linux/Print.cpp g++ -DMY_GATEWAY_LINUX -DMY_DEBUG -march=armv6zk -mtune=arm1176jzf-s -mfpu=vfp -mfloat-abi=hard -DLINUX_ARCH_RASPBERRYPI -Ofast -g -Wall -Wextra -DMY_PORT=5003 -I. -I./core -I./drivers/Linux -I./drivers/RPi -MMD -c -o drivers/Linux/EthernetClient.o drivers/Linux/EthernetClient.cpp g++ -DMY_GATEWAY_LINUX -DMY_DEBUG -march=armv6zk -mtune=arm1176jzf-s -mfpu=vfp -mfloat-abi=hard -DLINUX_ARCH_RASPBERRYPI -Ofast -g -Wall -Wextra -DMY_PORT=5003 -I. -I./core -I./drivers/Linux -I./drivers/RPi -MMD -c -o drivers/Linux/SerialPort.o drivers/Linux/SerialPort.cpp g++ -DMY_GATEWAY_LINUX -DMY_DEBUG -march=armv6zk -mtune=arm1176jzf-s -mfpu=vfp -mfloat-abi=hard -DLINUX_ARCH_RASPBERRYPI -Ofast -g -Wall -Wextra -DMY_PORT=5003 -I. -I./core -I./drivers/Linux -I./drivers/RPi -MMD -c -o drivers/Linux/Stream.o drivers/Linux/Stream.cpp g++ -DMY_GATEWAY_LINUX -DMY_DEBUG -march=armv6zk -mtune=arm1176jzf-s -mfpu=vfp -mfloat-abi=hard -DLINUX_ARCH_RASPBERRYPI -Ofast -g -Wall -Wextra -DMY_PORT=5003 -I. -I./core -I./drivers/Linux -I./drivers/RPi -MMD -c -o drivers/Linux/IPAddress.o drivers/Linux/IPAddress.cpp g++ -DMY_GATEWAY_LINUX -DMY_DEBUG -march=armv6zk -mtune=arm1176jzf-s -mfpu=vfp -mfloat-abi=hard -DLINUX_ARCH_RASPBERRYPI -Ofast -g -Wall -Wextra -DMY_PORT=5003 -I. -I./core -I./drivers/Linux -I./drivers/RPi -MMD -c -o drivers/Linux/compatibility.o drivers/Linux/compatibility.cpp g++ -DMY_GATEWAY_LINUX -DMY_DEBUG -march=armv6zk -mtune=arm1176jzf-s -mfpu=vfp -mfloat-abi=hard -DLINUX_ARCH_RASPBERRYPI -Ofast -g -Wall -Wextra -DMY_PORT=5003 -I. -I./core -I./drivers/Linux -I./drivers/RPi -MMD -c -o drivers/Linux/SoftEeprom.o drivers/Linux/SoftEeprom.cpp g++ -DMY_GATEWAY_LINUX -DMY_DEBUG -march=armv6zk -mtune=arm1176jzf-s -mfpu=vfp -mfloat-abi=hard -DLINUX_ARCH_RASPBERRYPI -Ofast -g -Wall -Wextra -DMY_PORT=5003 -I. -I./core -I./drivers/Linux -I./drivers/RPi -MMD -c -o drivers/Linux/EthernetServer.o drivers/Linux/EthernetServer.cpp g++ -DMY_GATEWAY_LINUX -DMY_DEBUG -march=armv6zk -mtune=arm1176jzf-s -mfpu=vfp -mfloat-abi=hard -DLINUX_ARCH_RASPBERRYPI -Ofast -g -Wall -Wextra -DMY_PORT=5003 -I. -I./core -I./drivers/Linux -I./drivers/RPi -MMD -c -o examples_linux/mysGateway.o examples_linux/mysGateway.cpp examples_linux/mysGateway.cpp: In function âvoid onPulse()â: examples_linux/mysGateway.cpp:96:37: error: âmicrosâ was not declared in this scope unsigned long newBlink = micros(); ^ examples_linux/mysGateway.cpp: In function âvoid loop()â: examples_linux/mysGateway.cpp:166:41: error: call of overloaded âset(volatile long unsigned int&)â is ambiguous send(lastCounterMsg.set(pulseCount)); // Send pulsecount value to gw in VAR1 ^ examples_linux/mysGateway.cpp:166:41: note: candidates are: In file included from ./MySensors.h:319:0, from examples_linux/mysGateway.cpp:60: ./core/MyMessage.cpp:222:12: note: MyMessage& MyMessage::set(const char*) <near match> MyMessage& MyMessage::set(const char* value) { ^ ./core/MyMessage.cpp:222:12: note: no known conversion for argument 1 from âvolatile long unsigned intâ to âconst char*â ./core/MyMessage.cpp:234:12: note: MyMessage& MyMessage::set(bool) MyMessage& MyMessage::set(bool value) { ^ ./core/MyMessage.cpp:241:12: note: MyMessage& MyMessage::set(uint8_t) MyMessage& MyMessage::set(uint8_t value) { ^ ./core/MyMessage.cpp:256:12: note: MyMessage& MyMessage::set(uint32_t) MyMessage& MyMessage::set(uint32_t value) { ^ ./core/MyMessage.cpp:263:12: note: MyMessage& MyMessage::set(int32_t) MyMessage& MyMessage::set(int32_t value) { ^ ./core/MyMessage.cpp:270:12: note: MyMessage& MyMessage::set(uint16_t) MyMessage& MyMessage::set(uint16_t value) { ^ ./core/MyMessage.cpp:277:12: note: MyMessage& MyMessage::set(int16_t) MyMessage& MyMessage::set(int16_t value) { ^ examples_linux/mysGateway.cpp:180:25: error: call of overloaded âsleep(long unsigned int&)â is ambiguous sleep(SEND_FREQUENCY); ^ examples_linux/mysGateway.cpp:180:25: note: candidates are: In file included from examples_linux/mysGateway.cpp:22:0: /usr/include/unistd.h:444:21: note: unsigned int sleep(unsigned int) extern unsigned int sleep (unsigned int __seconds); ^ In file included from ./MySensors.h:320:0, from examples_linux/mysGateway.cpp:60: ./core/MySensorsCore.cpp:543:8: note: int8_t sleep(uint32_t, bool) int8_t sleep(const uint32_t sleepingMS, const bool smartSleep) { ^ Makefile:46: recipe for target 'examples_linux/mysGateway.o' failed make: *** [examples_linux/mysGateway.o] Error 1 -
i was able to get a bit further by replacing all "unsigned long" declarations with "uint"
Remains unsolved:
root@raspberrypi:/downloads/MySensors# make cc -I. -I./core -I./drivers/Linux -I./drivers/RPi -MMD -c -o drivers/Linux/log.o drivers/Linux/log.c g++ -DMY_GATEWAY_LINUX -DMY_DEBUG -march=armv6zk -mtune=arm1176jzf-s -mfpu=vfp -mfloat-abi=hard -DLINUX_ARCH_RASPBERRYPI -Ofast -g -Wall -Wextra -DMY_PORT=5003 -I. -I./core -I./drivers/Linux -I./drivers/RPi -MMD -c -o drivers/Linux/noniso.o drivers/Linux/noniso.cpp g++ -DMY_GATEWAY_LINUX -DMY_DEBUG -march=armv6zk -mtune=arm1176jzf-s -mfpu=vfp -mfloat-abi=hard -DLINUX_ARCH_RASPBERRYPI -Ofast -g -Wall -Wextra -DMY_PORT=5003 -I. -I./core -I./drivers/Linux -I./drivers/RPi -MMD -c -o drivers/Linux/Print.o drivers/Linux/Print.cpp g++ -DMY_GATEWAY_LINUX -DMY_DEBUG -march=armv6zk -mtune=arm1176jzf-s -mfpu=vfp -mfloat-abi=hard -DLINUX_ARCH_RASPBERRYPI -Ofast -g -Wall -Wextra -DMY_PORT=5003 -I. -I./core -I./drivers/Linux -I./drivers/RPi -MMD -c -o drivers/Linux/EthernetClient.o drivers/Linux/EthernetClient.cpp g++ -DMY_GATEWAY_LINUX -DMY_DEBUG -march=armv6zk -mtune=arm1176jzf-s -mfpu=vfp -mfloat-abi=hard -DLINUX_ARCH_RASPBERRYPI -Ofast -g -Wall -Wextra -DMY_PORT=5003 -I. -I./core -I./drivers/Linux -I./drivers/RPi -MMD -c -o drivers/Linux/SerialPort.o drivers/Linux/SerialPort.cpp g++ -DMY_GATEWAY_LINUX -DMY_DEBUG -march=armv6zk -mtune=arm1176jzf-s -mfpu=vfp -mfloat-abi=hard -DLINUX_ARCH_RASPBERRYPI -Ofast -g -Wall -Wextra -DMY_PORT=5003 -I. -I./core -I./drivers/Linux -I./drivers/RPi -MMD -c -o drivers/Linux/Stream.o drivers/Linux/Stream.cpp g++ -DMY_GATEWAY_LINUX -DMY_DEBUG -march=armv6zk -mtune=arm1176jzf-s -mfpu=vfp -mfloat-abi=hard -DLINUX_ARCH_RASPBERRYPI -Ofast -g -Wall -Wextra -DMY_PORT=5003 -I. -I./core -I./drivers/Linux -I./drivers/RPi -MMD -c -o drivers/Linux/IPAddress.o drivers/Linux/IPAddress.cpp g++ -DMY_GATEWAY_LINUX -DMY_DEBUG -march=armv6zk -mtune=arm1176jzf-s -mfpu=vfp -mfloat-abi=hard -DLINUX_ARCH_RASPBERRYPI -Ofast -g -Wall -Wextra -DMY_PORT=5003 -I. -I./core -I./drivers/Linux -I./drivers/RPi -MMD -c -o drivers/Linux/compatibility.o drivers/Linux/compatibility.cpp g++ -DMY_GATEWAY_LINUX -DMY_DEBUG -march=armv6zk -mtune=arm1176jzf-s -mfpu=vfp -mfloat-abi=hard -DLINUX_ARCH_RASPBERRYPI -Ofast -g -Wall -Wextra -DMY_PORT=5003 -I. -I./core -I./drivers/Linux -I./drivers/RPi -MMD -c -o drivers/Linux/SoftEeprom.o drivers/Linux/SoftEeprom.cpp g++ -DMY_GATEWAY_LINUX -DMY_DEBUG -march=armv6zk -mtune=arm1176jzf-s -mfpu=vfp -mfloat-abi=hard -DLINUX_ARCH_RASPBERRYPI -Ofast -g -Wall -Wextra -DMY_PORT=5003 -I. -I./core -I./drivers/Linux -I./drivers/RPi -MMD -c -o drivers/Linux/EthernetServer.o drivers/Linux/EthernetServer.cpp g++ -DMY_GATEWAY_LINUX -DMY_DEBUG -march=armv6zk -mtune=arm1176jzf-s -mfpu=vfp -mfloat-abi=hard -DLINUX_ARCH_RASPBERRYPI -Ofast -g -Wall -Wextra -DMY_PORT=5003 -I. -I./core -I./drivers/Linux -I./drivers/RPi -MMD -c -o examples_linux/mysGateway.o examples_linux/mysGateway.cpp examples_linux/mysGateway.cpp: In function âvoid onPulse()â: examples_linux/mysGateway.cpp:96:28: error: âmicrosâ was not declared in this scope uint newBlink = micros(); ^ examples_linux/mysGateway.cpp: In function âvoid loop()â: examples_linux/mysGateway.cpp:180:25: error: call of overloaded âsleep(uint&)â is ambiguous sleep(SEND_FREQUENCY); ^ examples_linux/mysGateway.cpp:180:25: note: candidates are: In file included from examples_linux/mysGateway.cpp:22:0: /usr/include/unistd.h:444:21: note: unsigned int sleep(unsigned int) extern unsigned int sleep (unsigned int __seconds); ^ In file included from ./MySensors.h:320:0, from examples_linux/mysGateway.cpp:60: ./core/MySensorsCore.cpp:543:8: note: int8_t sleep(uint32_t, bool) int8_t sleep(const uint32_t sleepingMS, const bool smartSleep) { ^ Makefile:46: recipe for target 'examples_linux/mysGateway.o' failed make: *** [examples_linux/mysGateway.o] Error 1 -
-
i was able to get a bit further by replacing all "unsigned long" declarations with "uint"
Remains unsolved:
root@raspberrypi:/downloads/MySensors# make cc -I. -I./core -I./drivers/Linux -I./drivers/RPi -MMD -c -o drivers/Linux/log.o drivers/Linux/log.c g++ -DMY_GATEWAY_LINUX -DMY_DEBUG -march=armv6zk -mtune=arm1176jzf-s -mfpu=vfp -mfloat-abi=hard -DLINUX_ARCH_RASPBERRYPI -Ofast -g -Wall -Wextra -DMY_PORT=5003 -I. -I./core -I./drivers/Linux -I./drivers/RPi -MMD -c -o drivers/Linux/noniso.o drivers/Linux/noniso.cpp g++ -DMY_GATEWAY_LINUX -DMY_DEBUG -march=armv6zk -mtune=arm1176jzf-s -mfpu=vfp -mfloat-abi=hard -DLINUX_ARCH_RASPBERRYPI -Ofast -g -Wall -Wextra -DMY_PORT=5003 -I. -I./core -I./drivers/Linux -I./drivers/RPi -MMD -c -o drivers/Linux/Print.o drivers/Linux/Print.cpp g++ -DMY_GATEWAY_LINUX -DMY_DEBUG -march=armv6zk -mtune=arm1176jzf-s -mfpu=vfp -mfloat-abi=hard -DLINUX_ARCH_RASPBERRYPI -Ofast -g -Wall -Wextra -DMY_PORT=5003 -I. -I./core -I./drivers/Linux -I./drivers/RPi -MMD -c -o drivers/Linux/EthernetClient.o drivers/Linux/EthernetClient.cpp g++ -DMY_GATEWAY_LINUX -DMY_DEBUG -march=armv6zk -mtune=arm1176jzf-s -mfpu=vfp -mfloat-abi=hard -DLINUX_ARCH_RASPBERRYPI -Ofast -g -Wall -Wextra -DMY_PORT=5003 -I. -I./core -I./drivers/Linux -I./drivers/RPi -MMD -c -o drivers/Linux/SerialPort.o drivers/Linux/SerialPort.cpp g++ -DMY_GATEWAY_LINUX -DMY_DEBUG -march=armv6zk -mtune=arm1176jzf-s -mfpu=vfp -mfloat-abi=hard -DLINUX_ARCH_RASPBERRYPI -Ofast -g -Wall -Wextra -DMY_PORT=5003 -I. -I./core -I./drivers/Linux -I./drivers/RPi -MMD -c -o drivers/Linux/Stream.o drivers/Linux/Stream.cpp g++ -DMY_GATEWAY_LINUX -DMY_DEBUG -march=armv6zk -mtune=arm1176jzf-s -mfpu=vfp -mfloat-abi=hard -DLINUX_ARCH_RASPBERRYPI -Ofast -g -Wall -Wextra -DMY_PORT=5003 -I. -I./core -I./drivers/Linux -I./drivers/RPi -MMD -c -o drivers/Linux/IPAddress.o drivers/Linux/IPAddress.cpp g++ -DMY_GATEWAY_LINUX -DMY_DEBUG -march=armv6zk -mtune=arm1176jzf-s -mfpu=vfp -mfloat-abi=hard -DLINUX_ARCH_RASPBERRYPI -Ofast -g -Wall -Wextra -DMY_PORT=5003 -I. -I./core -I./drivers/Linux -I./drivers/RPi -MMD -c -o drivers/Linux/compatibility.o drivers/Linux/compatibility.cpp g++ -DMY_GATEWAY_LINUX -DMY_DEBUG -march=armv6zk -mtune=arm1176jzf-s -mfpu=vfp -mfloat-abi=hard -DLINUX_ARCH_RASPBERRYPI -Ofast -g -Wall -Wextra -DMY_PORT=5003 -I. -I./core -I./drivers/Linux -I./drivers/RPi -MMD -c -o drivers/Linux/SoftEeprom.o drivers/Linux/SoftEeprom.cpp g++ -DMY_GATEWAY_LINUX -DMY_DEBUG -march=armv6zk -mtune=arm1176jzf-s -mfpu=vfp -mfloat-abi=hard -DLINUX_ARCH_RASPBERRYPI -Ofast -g -Wall -Wextra -DMY_PORT=5003 -I. -I./core -I./drivers/Linux -I./drivers/RPi -MMD -c -o drivers/Linux/EthernetServer.o drivers/Linux/EthernetServer.cpp g++ -DMY_GATEWAY_LINUX -DMY_DEBUG -march=armv6zk -mtune=arm1176jzf-s -mfpu=vfp -mfloat-abi=hard -DLINUX_ARCH_RASPBERRYPI -Ofast -g -Wall -Wextra -DMY_PORT=5003 -I. -I./core -I./drivers/Linux -I./drivers/RPi -MMD -c -o examples_linux/mysGateway.o examples_linux/mysGateway.cpp examples_linux/mysGateway.cpp: In function âvoid onPulse()â: examples_linux/mysGateway.cpp:96:28: error: âmicrosâ was not declared in this scope uint newBlink = micros(); ^ examples_linux/mysGateway.cpp: In function âvoid loop()â: examples_linux/mysGateway.cpp:180:25: error: call of overloaded âsleep(uint&)â is ambiguous sleep(SEND_FREQUENCY); ^ examples_linux/mysGateway.cpp:180:25: note: candidates are: In file included from examples_linux/mysGateway.cpp:22:0: /usr/include/unistd.h:444:21: note: unsigned int sleep(unsigned int) extern unsigned int sleep (unsigned int __seconds); ^ In file included from ./MySensors.h:320:0, from examples_linux/mysGateway.cpp:60: ./core/MySensorsCore.cpp:543:8: note: int8_t sleep(uint32_t, bool) int8_t sleep(const uint32_t sleepingMS, const bool smartSleep) { ^ Makefile:46: recipe for target 'examples_linux/mysGateway.o' failed make: *** [examples_linux/mysGateway.o] Error 1@ericvdb micros() hasn't been ported, use:
millis() /1000;for sleep(), replace:
sleep(SEND_FREQUENCY);with
sleep(SEND_FREQUENCY, false);Also, if you want to print something don't use Serial.print() or Serial.println(), use printf() or debug().
Serial.print("l/min:"); Serial.println(flow);should be:
debug("l/min: %f\n", flow);as @hek said, the main focus now is to be used as a gateway, with time adding sensors will become less problematic.
-
@marceloaqno
I have it almost working. Regarding the interrupt, I have to pull-up to 3.3V the io pin through a resistor of 10k?
Right now the interrupt isn't firing -
@shfg There were some reports about this problem in the past, do you see any error messages in your mosquitto log?
@ericvdb yes, you can attach a function to handle an interruption like this:
uint8_t mode = FALLING; // Valid options are: CHANGE, FALLING, RISING uint8_t physPin = 16; // Choose a pin that fits your needs void irqHandler(void) { // Process the interrupt } void setup() { attachInterrupt(physPin, irqHandler, mode); }Support for I2C was added in the latest version.
@marceloaqno thanks, turned on mosquitto logging and am getting this error on mosquitto:
1476724216: Invalid protocol "MQTT" in CONNECT from 127.0.0.1.
1476724216: Socket read error on client (null), disconnecting.Tried an alternative mosquitto broker on another server too - same error.
-
I have it working :smiley: only need to play with the debounce value
-
@shfg There were some reports about this problem in the past, do you see any error messages in your mosquitto log?
@ericvdb yes, you can attach a function to handle an interruption like this:
uint8_t mode = FALLING; // Valid options are: CHANGE, FALLING, RISING uint8_t physPin = 16; // Choose a pin that fits your needs void irqHandler(void) { // Process the interrupt } void setup() { attachInterrupt(physPin, irqHandler, mode); }Support for I2C was added in the latest version.
@marceloaqno I finally have the MQTT gateway working after upgrading mosquitto to the latest build... I had installed mosquitto with apt-get under Wheezy which apparently pulled an older version. In retrospect probably should have just upgraded to Jessie from the outset! Working perfectly now (still under wheezy though FWIW)... thanks!
-
@Christian-Simonsen start the gateway with debug enabled:
mysGateway -d -
Hi,
Background: I have a raspberry Pi 2 that I've installed MyController on. This works fine, I can access it via the browser. I have also wired up an NRF24L01+ module to the GPIO pins on the Raspberry Pi. I have also set up the raspberry pi as a gateway in the MyController Gateway setup page in Safari. It found it and it seem to work.
However to my question. How do I know if the Raspberry Pi gateway with NRF24L01 work? How can I monitor what the Raspberry Pi gateway receive? Is there a similar way as the "Serial Monitor" that I use in the Arduino application, when accessing Arduino Uno via USB?
If there is I need to monitor this via OSX Terminal.
@Christian-Simonsen If you don't have debug enabled you could also just use:
tail -f /dev/ttyUSB20My port is named ttyUSB20. You should substitute whatever you have named your port.
-
@Christian-Simonsen If you don't have debug enabled you could also just use:
tail -f /dev/ttyUSB20My port is named ttyUSB20. You should substitute whatever you have named your port.
Thanks I'll test it. But it seems like I've jumped over a step or two. Or something isn't working. Nothing happened when I wrote "Make" in Terminal, so I jumped over this step. I guess that might be the problem.
Do I have to configure (./configure -help) or can I use the default values when I connect the NRF24L01 to the GPIO pins?
-
@b0rmann what happened? Did you fixed the problem you described in your last message?
-
@b0rmann what happened? Did you fixed the problem you described in your last message?
it's my problem. accidentally disconnected power from nrf24 on running gw
-
@marceloaqno I have it completely working now. :satisfied: A Raspberry Pi PulseCounter for water/gas/electricity consumption measurements with ethernet/mqtt. I can post my code here if you want.
Minor detail:
millis() / 1000;should be
millis() * 1000;to get micros() ;)
-
@marceloaqno I have it completely working now. :satisfied: A Raspberry Pi PulseCounter for water/gas/electricity consumption measurements with ethernet/mqtt. I can post my code here if you want.
Minor detail:
millis() / 1000;should be
millis() * 1000;to get micros() ;)
@ericvdb Congrats! oops, sorry about my mistake.
-
This post is deleted!