not working
This commit is contained in:
@@ -12,9 +12,11 @@
|
|||||||
platform = espressif32
|
platform = espressif32
|
||||||
board = esp32dev
|
board = esp32dev
|
||||||
framework = arduino
|
framework = arduino
|
||||||
|
monitor_speed = 115200
|
||||||
|
upload_port = COM6
|
||||||
|
monitor_port = COM6
|
||||||
lib_deps =
|
lib_deps =
|
||||||
gioblu/PJON@^13.1
|
gioblu/PJON@^13.1
|
||||||
knolleary/PubSubClient@^2.8
|
knolleary/PubSubClient@^2.8
|
||||||
braydenanderson2014/Hashtable@^1.1.3
|
braydenanderson2014/Hashtable@^1.1.3
|
||||||
nkaaf/List@^3.0.1
|
|
||||||
robtillaart/SET@^0.2.8
|
robtillaart/SET@^0.2.8
|
||||||
|
|||||||
175
src/main.cpp
175
src/main.cpp
@@ -6,44 +6,42 @@
|
|||||||
#include <WiFi.h>
|
#include <WiFi.h>
|
||||||
#include <Hashtable.h>
|
#include <Hashtable.h>
|
||||||
#include <set.h>
|
#include <set.h>
|
||||||
|
#include <PJONDualUDP.h>
|
||||||
|
|
||||||
#define RECEIVER 1
|
#define RECEIVER 1
|
||||||
#define SBBPIN 12
|
#define SBBPIN 25
|
||||||
|
|
||||||
|
|
||||||
// put function declarations here:
|
// put function declarations here:
|
||||||
|
|
||||||
void publishMqtt(PJONAny, uint8_t, String, String );
|
void publishMqtt(PJONAny, uint8_t, String, String );
|
||||||
void receiver_function(uint8_t , uint16_t length, const PJON_Packet_Info);
|
|
||||||
void error_handler(uint8_t, uint16_t);
|
|
||||||
long getDistance();
|
long getDistance();
|
||||||
|
|
||||||
// WLAN Daten
|
// WLAN Daten
|
||||||
const char* ssid = "DEIN_SSID";
|
const char* ssid = "binde";
|
||||||
const char* password = "DEIN_PASSWORT";
|
const char* password = "bindi1518!";
|
||||||
|
|
||||||
// MQTT Daten
|
// MQTT Daten
|
||||||
const char* mqtt_server = "DEIN_MQTT_BROKER";
|
const char* mqtt_server = "10.6.0.194";
|
||||||
const int mqtt_port = 1883;
|
const int mqtt_port = 1883;
|
||||||
|
|
||||||
// Strategy
|
// Strategy
|
||||||
StrategyLink<SoftwareBitBang> link;
|
//StrategyLink<SoftwareBitBang> linkstrategy;
|
||||||
|
StrategyLink<DualUDP> linkstrategy;
|
||||||
|
|
||||||
// Bus Address
|
// Bus Address
|
||||||
PJONAny bus(1);
|
PJONAny bus(1);
|
||||||
|
|
||||||
struct mqttMessage {
|
struct mqttMessage {
|
||||||
uint8_t method; // 0: publish 1: subscribe 2: unsubscribe
|
uint8_t method; // 0: publish 1: subscribe 2: unsubscribe
|
||||||
char topic[250];
|
char topic[10];
|
||||||
char message[512];
|
char message[10];
|
||||||
};
|
};
|
||||||
|
|
||||||
mqttMessage receiveBuffer;
|
mqttMessage receiveBuffer;
|
||||||
bool receivedFlag = false;
|
bool receivedFlag = false;
|
||||||
|
|
||||||
WiFiClient espClient;
|
//WiFiClient espClient;
|
||||||
PubSubClient client(espClient);
|
//PubSubClient client(espClient);
|
||||||
|
|
||||||
|
|
||||||
Hashtable<String,Set> subs;
|
Hashtable<String,Set> subs;
|
||||||
@@ -52,11 +50,13 @@ Hashtable<String,Set> subs;
|
|||||||
void setup_wifi() {
|
void setup_wifi() {
|
||||||
WiFi.mode(WIFI_STA);
|
WiFi.mode(WIFI_STA);
|
||||||
WiFi.begin(ssid, password);
|
WiFi.begin(ssid, password);
|
||||||
|
Serial.println("connected");
|
||||||
while (WiFi.status() != WL_CONNECTED) {
|
while (WiFi.status() != WL_CONNECTED) {
|
||||||
|
Serial.println(".");
|
||||||
delay(500);
|
delay(500);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
void reconnect() {
|
void reconnect() {
|
||||||
while (!client.connected()) {
|
while (!client.connected()) {
|
||||||
if (client.connect("UltrasoundClient")) {
|
if (client.connect("UltrasoundClient")) {
|
||||||
@@ -66,62 +66,16 @@ void reconnect() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
void setup() {
|
|
||||||
// put your setup code here, to run once:
|
|
||||||
|
|
||||||
link.strategy.set_pin(SBBPIN);
|
|
||||||
bus.strategy.set_link(&link);
|
|
||||||
bus.set_error(error_handler);
|
|
||||||
bus.set_receiver(receiver_function);
|
|
||||||
bus.begin();
|
|
||||||
|
|
||||||
setup_wifi();
|
|
||||||
client.setServer(mqtt_server, mqtt_port);
|
|
||||||
client.setCallback(callback);
|
|
||||||
}
|
|
||||||
|
|
||||||
void loop() {
|
|
||||||
// put your main code here, to run repeatedly:
|
|
||||||
bus.update();
|
|
||||||
|
|
||||||
if (receivedFlag) {
|
|
||||||
receivedFlag = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// JSONMqtt funktions
|
|
||||||
|
|
||||||
void publishMqtt(PJONAny bus, uint8_t destAddress, String topic, String message ){
|
|
||||||
mqttMessage mqMessage;
|
|
||||||
mqMessage.method = 0;
|
|
||||||
topic.toCharArray(mqMessage.topic, topic.length());
|
|
||||||
message.toCharArray(mqMessage.message, message.length());
|
|
||||||
bus.send(destAddress,&mqMessage,sizeof(mqMessage));
|
|
||||||
}
|
|
||||||
|
|
||||||
void callback(char* topic, byte* payload, unsigned int length) {
|
|
||||||
|
|
||||||
Serial.println();
|
|
||||||
Set tempset;
|
|
||||||
memcpy(&tempset,subs.get(topic),sizeof(subs.get(topic)));
|
|
||||||
int n = tempset.first();
|
|
||||||
while (n != -1)
|
|
||||||
{
|
|
||||||
publishMqtt(bus, n, topic,String((char)payload));
|
|
||||||
n = tempset.next();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void receiver_function(uint8_t *payload, uint16_t length, const PJON_Packet_Info &packet_info) {
|
void receiver_function(uint8_t *payload, uint16_t length, const PJON_Packet_Info &packet_info) {
|
||||||
/* Copy received data in buffer */
|
/* Copy received data in buffer */
|
||||||
|
Serial.println("received pjon message");
|
||||||
|
/*
|
||||||
memcpy(&receiveBuffer, payload, sizeof(receiveBuffer));
|
memcpy(&receiveBuffer, payload, sizeof(receiveBuffer));
|
||||||
receivedFlag = true;
|
receivedFlag = true;
|
||||||
|
Serial.println(receiveBuffer.topic);
|
||||||
|
*/
|
||||||
|
/*
|
||||||
if (receiveBuffer.method == 0){
|
if (receiveBuffer.method == 0){
|
||||||
client.publish(receiveBuffer.topic,receiveBuffer.message);
|
client.publish(receiveBuffer.topic,receiveBuffer.message);
|
||||||
} else if (receiveBuffer.method == 1){
|
} else if (receiveBuffer.method == 1){
|
||||||
@@ -134,11 +88,92 @@ void receiver_function(uint8_t *payload, uint16_t length, const PJON_Packet_Info
|
|||||||
}else if (receiveBuffer.method == 2){
|
}else if (receiveBuffer.method == 2){
|
||||||
subs.get(receiveBuffer.topic)->sub(packet_info.tx.id);
|
subs.get(receiveBuffer.topic)->sub(packet_info.tx.id);
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
};
|
};
|
||||||
|
|
||||||
void error_handler(uint8_t code, uint16_t data, void *custom_pointer) {
|
void error_handler(uint8_t code, uint16_t data, void *custom_pointer) {
|
||||||
if(code == PJON_CONNECTION_LOST) {
|
if(code == PJON_CONNECTION_LOST) {
|
||||||
Serial.print("Connection lost with device id ");
|
Serial.print("Connection with device ID ");
|
||||||
Serial.println(bus.packets[data].content[0], DEC);
|
Serial.print(bus.packets[data].content[0], DEC);
|
||||||
|
Serial.println(" is lost.");
|
||||||
}
|
}
|
||||||
};
|
if(code == PJON_PACKETS_BUFFER_FULL) {
|
||||||
|
Serial.print("Packet buffer is full, has now a length of ");
|
||||||
|
Serial.println(data, DEC);
|
||||||
|
Serial.println("Possible wrong bus configuration!");
|
||||||
|
Serial.println("higher PJON_MAX_PACKETS if necessary.");
|
||||||
|
}
|
||||||
|
if(code == PJON_CONTENT_TOO_LONG) {
|
||||||
|
Serial.print("Content is too long, length: ");
|
||||||
|
Serial.println(data);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
/*
|
||||||
|
void callback(char* topic, byte* payload, unsigned int length) {
|
||||||
|
Serial.println("received Mqtt Message");
|
||||||
|
Set tempset;
|
||||||
|
memcpy(&tempset,subs.get(topic),sizeof(subs.get(topic)));
|
||||||
|
int n = tempset.first();
|
||||||
|
String msg;
|
||||||
|
for (unsigned int i = 0; i < length; i++) {
|
||||||
|
msg += (char)payload[i]; // Zeichenweise anhängen
|
||||||
|
}
|
||||||
|
while (n != -1)
|
||||||
|
{
|
||||||
|
publishMqtt(bus, n, topic,msg);
|
||||||
|
n = tempset.next();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
void setup() {
|
||||||
|
// put your setup code here, to run once:
|
||||||
|
Serial.begin(115200);
|
||||||
|
setup_wifi();
|
||||||
|
//linkstrategy.strategy.set_pin(12);
|
||||||
|
bus.set_error(error_handler);
|
||||||
|
bus.strategy.set_link(&linkstrategy);
|
||||||
|
bus.set_receiver(receiver_function);
|
||||||
|
bus.begin();
|
||||||
|
|
||||||
|
|
||||||
|
//client.setServer(mqtt_server, mqtt_port);
|
||||||
|
//client.setCallback(callback);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned long previousMillis = 0; // Zwischenspeicher für Zeitstempel
|
||||||
|
const long interval = 1000; // Intervall in Millisekunden (1 Sekunde)
|
||||||
|
void loop() {
|
||||||
|
// put your main code here, to run repeatedly:
|
||||||
|
bus.update();
|
||||||
|
bus.receive();
|
||||||
|
|
||||||
|
//client.loop();
|
||||||
|
unsigned long currentMillis = millis();
|
||||||
|
|
||||||
|
if (currentMillis - previousMillis >= interval) {
|
||||||
|
previousMillis = currentMillis;
|
||||||
|
publishMqtt(bus,44, "test","42");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (receivedFlag) {
|
||||||
|
receivedFlag = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// JSONMqtt funktions
|
||||||
|
|
||||||
|
void publishMqtt(PJONAny bus, uint8_t destAddress, String topic, String message ){
|
||||||
|
Serial.println(topic);
|
||||||
|
mqttMessage mqMessage;
|
||||||
|
mqMessage.method = 0;
|
||||||
|
topic.toCharArray(mqMessage.topic, topic.length());
|
||||||
|
message.toCharArray(mqMessage.message, message.length());
|
||||||
|
bus.send(destAddress,&mqMessage,sizeof(mqMessage));
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user