not working

This commit is contained in:
2025-10-09 08:32:09 +02:00
parent 0c01edd7e1
commit 27e3d59738
2 changed files with 108 additions and 71 deletions

View File

@@ -6,44 +6,42 @@
#include <WiFi.h>
#include <Hashtable.h>
#include <set.h>
#include <PJONDualUDP.h>
#define RECEIVER 1
#define SBBPIN 12
#define SBBPIN 25
// put function declarations here:
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();
// WLAN Daten
const char* ssid = "DEIN_SSID";
const char* password = "DEIN_PASSWORT";
const char* ssid = "binde";
const char* password = "bindi1518!";
// MQTT Daten
const char* mqtt_server = "DEIN_MQTT_BROKER";
const char* mqtt_server = "10.6.0.194";
const int mqtt_port = 1883;
// Strategy
StrategyLink<SoftwareBitBang> link;
//StrategyLink<SoftwareBitBang> linkstrategy;
StrategyLink<DualUDP> linkstrategy;
// Bus Address
PJONAny bus(1);
struct mqttMessage {
uint8_t method; // 0: publish 1: subscribe 2: unsubscribe
char topic[250];
char message[512];
char topic[10];
char message[10];
};
mqttMessage receiveBuffer;
bool receivedFlag = false;
WiFiClient espClient;
PubSubClient client(espClient);
//WiFiClient espClient;
//PubSubClient client(espClient);
Hashtable<String,Set> subs;
@@ -52,11 +50,13 @@ Hashtable<String,Set> subs;
void setup_wifi() {
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
Serial.println("connected");
while (WiFi.status() != WL_CONNECTED) {
Serial.println(".");
delay(500);
}
}
/*
void reconnect() {
while (!client.connected()) {
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) {
/* Copy received data in buffer */
Serial.println("received pjon message");
/*
memcpy(&receiveBuffer, payload, sizeof(receiveBuffer));
receivedFlag = true;
Serial.println(receiveBuffer.topic);
*/
/*
if (receiveBuffer.method == 0){
client.publish(receiveBuffer.topic,receiveBuffer.message);
} 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){
subs.get(receiveBuffer.topic)->sub(packet_info.tx.id);
}
*/
};
void error_handler(uint8_t code, uint16_t data, void *custom_pointer) {
if(code == PJON_CONNECTION_LOST) {
Serial.print("Connection lost with device id ");
Serial.println(bus.packets[data].content[0], DEC);
Serial.print("Connection with device ID ");
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));
}