Sigfox P2P 06: LAN to Sigfox GW
This example shows how to receive multiple packets from a LAN network. Then all packets received are sent to the Sigfox network. Thus, this node will act as gateway from a LAN network to the Sigfox infrastructure
Required Materials
1 x Waspmote 1 x Battery 1 x Sigfox 868 module 1 x 868 MHz antenna
Notes
- This code is part of several Waspmote communication. This is the receiving side. So, in order to establish communication, please set up one or more sending nodes - This example can be executed in Waspmote v12 and Waspmote v15 - This example only works with Sigfox 868 module
Code
/*
* ------ Sigfox P2P Code Example --------
*
* Explanation: This example shows how to receive multiple packets
* from a LAN network. Then all packets received are sent to the
* Sigfox network. Thus, this node will act as gateway from a LAN
* network to the Sigfox infrastructure
*
* Copyright (C) 2016 Libelium Comunicaciones Distribuidas S.L.
* http://www.libelium.com
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*
* Version: 3.0
* Design: David Gascon
* Implementation: Yuri Carmona
*/
// Put your libraries here (#include ...)
#include <WaspSigfox.h>
//////////////////////////////////////////////
uint8_t socket = SOCKET0;
//////////////////////////////////////////////
// ADDRESS: Define the LAN network address.
// Range: From 0x000000 to 0xFFFFFF.
// Default: 0x000000
//////////////////////////////////////////////
uint32_t address = 0x000001;
//////////////////////////////////////////////
uint8_t error;
// sigfox packet is 12-byte length (24 hexa)
char sigfox_packet[25];
void setup()
{
USB.ON();
//////////////////////////////////////////////
// switch on
//////////////////////////////////////////////
error = Sigfox.ON(socket);
// Check status
if( error == 0 )
{
USB.println(F("Switch ON OK"));
}
else
{
USB.println(F("Switch ON ERROR"));
}
//////////////////////////////////////////////
// Set LAN address
//////////////////////////////////////////////
error = Sigfox.setAddressLAN(address);
// Check status
if( error == 0 )
{
USB.println(F("Set LAN Address OK"));
}
else
{
USB.println(F("Set LAN Address ERROR"));
}
//////////////////////////////////////////////
// Set Multi-packet reception mode
//////////////////////////////////////////////
error = Sigfox.setMultiPacket();
// Check status
if( error == 0 )
{
USB.println(F("Set Multi-packet mode OK"));
}
else
{
USB.println(F("Set Multi-packet mode ERROR"));
}
USB.println();
}
void loop()
{
// Receive data
USB.println(F("Waiting for LAN data..."));
// wait for a new packet (10 seconds)
error = Sigfox.getMultiPacket(10);
if (error == 0)
{
USB.println(F("---------------------------------------"));
USB.print(F("LAN Packet received: "));
USB.println(Sigfox._packet);
// copy first 12 bytes from received LAN packet
snprintf( sigfox_packet, sizeof(sigfox_packet), "%s", Sigfox._packet);
USB.println(F("Routing the packet to Sigfox network (only first 12 bytes)..."));
USB.print(F("Sigfox packet to send: "));
USB.println(sigfox_packet);
// send Sigfox packet with received data (only first 12 bytes)
error = Sigfox.send(sigfox_packet);
// Check sending status
if( error == 0 )
{
USB.println(F("Sigfox packet sent OK"));
}
else
{
USB.println(F("Sigfox packet sent ERROR"));
}
USB.println(F("---------------------------------------"));
}
else
{
USB.println(F("Packet not received (timeout)"));
}
USB.println();
}
Output
H#
Switch ON OK
Set LAN Address OK
Set Multi-packet mode OK
Waiting for LAN data...
---------------------------------------
LAN Packet received: 0001020304050607080900000000000000
Routing the packet to Sigfox network (only first 12 bytes)...
Sigfox packet to send: 000102030405060708090000
Sigfox packet sent OK
---------------------------------------
Waiting for LAN data...
Packet not received (timeout)
Waiting for LAN data...
---------------------------------------
LAN Packet received: 0001020304050607080900000000000000
Routing the packet to Sigfox network (only first 12 bytes)...
Sigfox packet to send: 000102030405060708090000
Sigfox packet sent OK
---------------------------------------
Waiting for LAN data...
...
Last updated