Okay guys I need some help can’t figure out whats wrong. New at this and just lost as to what to do.
I am using 2 raspberry pi’s
Openhab 192.168.3.2
MQTT Broker Mosquitto 192.168.3.3
Arduinno Nano w/ ENC28J60 ip 192.168.3.20
Openhab bindings
Network
NTP
MQTT / MQTT Action / MQTT presence
Arduino Code (Is loaded to Nano)
#include <UIPEthernet.h>
#include <utility/logging.h>
#include <PubSubClient.h>
// Set the MAC address
byte mac[] = { 0x90, 0xA2, 0xDA, 0x0F, 0x5E, 0x69 };
// Set fallback IP address if DHCP fails
IPAddress ip(192,168,3,20);
// Set the broker server IP
byte server[] = { 192,168,3,3 };
EthernetClient ethClient;
// Callback function header
void callback(char* topic, byte* payload, unsigned int length);
PubSubClient client(server, 1883, callback, ethClient);
int SoffitR;
int SoffitG;
int SoffitB;
int BLUE = 5;
int GREEN = 7;
int RED = 3;
void setup()
{
// Open serial communications
Serial.begin(9600);
// Start with a hard-coded address:
Serial.println("Assigning Static IP address:");
Ethernet.begin(mac, ip);
Serial.print("My address:");
Serial.println(Ethernet.localIP());
// Connect to Broker, give it arduino as the name
if (client.connect(“arduino_LED2”)) {
// Publish a message to the status topic
client.publish("status/arduino_LED2","Arduino LED2 is now online");
// Listen for messages on the control topic
client.subscribe("control/arduino_LED2");
}
}
void loop()
{
client.loop();
}
void callback(char* topic, byte* payload, unsigned int length) {
// check for messages on subscribed topics
payload[length] = ‘\0’;
Serial.print("Topic: ");
Serial.println(String(topic));
// check topic to identify type of content
if(String(topic) == “control/arduino_LED2/livingroom/color”) {
// convert payload to String
String value = String((char*)payload);
//value.trim();
Serial.print (value);
//Serial.flush();
// split string at every “,” and store in proper variable
// convert final result to integer
SoffitR = value.substring(0,value.indexOf(’,’)).toInt();
SoffitG = value.substring(value.indexOf(’,’)+1,value.lastIndexOf(’,’)).toInt();
SoffitB = value.substring(value.lastIndexOf(’,’)+1).toInt();
// print obtained values for debugging
Serial.print("RED: ");
Serial.println(SoffitR);
//client.publish("status/arduino_LED2", SoffitR);
Serial.print("GREEN: ");
Serial.println(SoffitG);
//client.publish("status/arduino_LED2", SoffitG);
Serial.print("BLUE: ");
Serial.println(SoffitB);
//client.publish("status/arduino_LED2/soffit/color/blue", int SoffitB);
//Serial.flush();
analogWrite(GREEN, SoffitG);
analogWrite(RED, SoffitR);
analogWrite(BLUE, SoffitB);
while(Serial.available())
Serial.read();
}
}
OpenHap Items
#Test
String LivSoffitLight (Lights_LivingRoom) {mqtt=">[broker:control/arduino_LED2/livingroom/color:state:*:default]"}
Color LivSoffitLightColor “Living Room Accent Color”
Openhab Sitemap
sitemap Home label=“MC Smart Home Automation” {
Frame label=“Date” {
Text item=Date
}
Frame label=“Demo” {
Colorpicker item=LivSoffitLight label=“Living Room Accent” icon=“colorwheel”
Switch item=Lights icon="light"
Text item=LR_Temperature label="Livingroom [%.1f °C]"
Group item=Heating
Text item=LR_Multimedia_Summary label="Multimedia [%s]" icon="video" {
Selection item=LR_TV_Channel mappings=[0="off", 1="DasErste", 2="BBC One", 3="Cartoon Network"]
Slider item=LR_TV_Volume
}
}
}
I need help guys I have a color wheel on the sitemap however doesn’t seem that the MQTT server is receiving the commands from Openhab.
Can anyone help me out? Am i missing something?