Hi sundberg84, using 5 Nodes was my first idea. But i want to use V_VAR1...
But you solved me problem indirecty. I installed MYSController and...the code (updated above) is correct.
Looks like ioBroker is my problem.
Thanks for your help Thorsten
Hi sundberg84, using 5 Nodes was my first idea. But i want to use V_VAR1...
But you solved me problem indirecty. I installed MYSController and...the code (updated above) is correct.
Looks like ioBroker is my problem.
Thanks for your help Thorsten
Hi,
could it be that there is a litte bug in the mysensors adapter for iobroker?
The MYSensors API say that V_VAR1 .. V_VAR5 is possible for "any Device".
But I can't use them with S_INFO.
The MYSensors Controller can Handle this.
So i edit the getmeta.js like this
'S_INFO': {index: 36, role: 'info', vars: ['V_TEXT', 'V_VAR1', 'V_VAR2', 'V_VAR3', 'V_VAR4', 'V_VAR5']},
With this modification, it works...
Regards Thorsten
Made small update .....X,Y Pos Fontsize...
Hi sundberg84, using 5 Nodes was my first idea. But i want to use V_VAR1...
But you solved me problem indirecty. I installed MYSController and...the code (updated above) is correct.
Looks like ioBroker is my problem.
Thanks for your help Thorsten
Hi, this is my code for writing Text to the oled display.
Controller is ioBroker and so far everything is working, but... I like to place multiple lines to the display using V_VAR1 - V_VAR5. How to use them?
And do i need a ACK Command?
Thanks for you help, sorry this is my first "self made" node.
/**
* 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 Henrik Ekblad <henrik.ekblad@mysensors.org>
* Copyright (C) 2013-2015 Sensnology AB
* 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.
*
*******************************
*
* REVISION HISTORY
* Version 1.1 - Thorsten Böttcher
*
* DESCRIPTION
* Example sketch showing how to send messages to 0,96" OLED Display
*
* ****************************
*
* OLED ARDUINO
* -----1234-----
* | | 1 -> 3,3 V
* | | 2 -> GND
* | | 3 -> A5 SCL
* | | 4 -> A4 SDA
* --------------
*
* OLED ASCII Library from https://github.com/greiman/SSD1306Ascii
*
*/
// Enable debug prints to serial monitor
#define MY_DEBUG
// Enable and select radio type attached
//#define MY_RADIO_NRF24
#define MY_RADIO_RFM69
#include <SPI.h>
#include <MySensors.h>
#define CHILD_ID 0
//oled display
#include "SSD1306Ascii.h"
#include "SSD1306AsciiAvrI2c.h"
#define I2C_ADDRESS 0x3C
SSD1306AsciiAvrI2c oled;
// SketchInfo
static const char SketchName[] ="Info Display";
static const char SketchVersion[] ="1.1";
int PosX = 0;
int PosY = 0;
int ClrScr = 0;
int FontSize = 1;
// loop
static const uint64_t UPDATE_INTERVAL = 60000;
MyMessage msgText (CHILD_ID, V_TEXT); // Text
MyMessage msgVar1 (CHILD_ID, V_VAR1); // Cursor PosX
MyMessage msgVar2 (CHILD_ID, V_VAR2); // Cursor PosY
MyMessage msgVar3 (CHILD_ID, V_VAR3); // Clear Screen
MyMessage msgVar4 (CHILD_ID, V_VAR4); // FontSize
MyMessage msgVar5 (CHILD_ID, V_VAR5); // Not Used
void setup()
{
Serial.println("starting...");
ShowInfo();
}
void presentation() {
// Send the sketch version information to the gateway and Controller
sendSketchInfo(SketchName, SketchVersion);
present(CHILD_ID, S_INFO);
}
void receive(const MyMessage &mymessage)
{
if (mymessage.type==V_TEXT) {
DisplayMessage(mymessage.getString());
}
if (mymessage.type==V_VAR1) {
PosX = atoi(mymessage.getString());
}
if (mymessage.type==V_VAR2) {
PosY = atoi(mymessage.getString());
}
if (mymessage.type==V_VAR3) {
ClrScr=atoi(mymessage.getString());
if ( ClrScr > 0 )
oled.clear();
}
if (mymessage.type==V_VAR4) {
oled.set1X();
FontSize=atoi(mymessage.getString());
if ( FontSize > 1 )
oled.set2X();
}
}
void loop()
{
// Wait, but receive messages
wait(UPDATE_INTERVAL);
}
void ShowInfo()
{
oled.begin(&Adafruit128x64, I2C_ADDRESS);
oled.setFont(Arial14);
oled.setFont(Arial14);
oled.set1X();
oled.setCursor(20,1);
oled.write("* MySensors 2.0 *");
oled.setCursor(30,3);
oled.write(SketchName);
oled.write(" ");
oled.write(SketchVersion);
oled.setCursor(30,5);
oled.write("NodeID");
oled.write(" ");
oled.print(getNodeId());
sleep(3000);
oled.clear();
}
void DisplayMessage(const char Message[])
{
oled.setCursor(PosX,PosY);
oled.clearToEOL ();
oled.write(Message);
}