Our website shows online advertisements to our visitors to cover the cost of hosting.

Please, consider supporting us by deactivating our Web in your Ad Blocker. !!!
    How to disable AdBlock

DISABLE YOUR ADBLOCKER ON OUR WEB TO ENJOY THE CONTENT
1.- Press the adblocker icon.
2.- Select "Do not act on pages of this domain" (or similar).
You can also press the "Activated on this site" or "Pause adblocker" button.
3.- Press the "Refresh" button of your browser to see the content you want to view.

HS3 sende tekst til display via MySensors

Besvar
Ole
Indlæg: 96
Tilmeldt: 28 jun 2014, 19:44
Geografisk sted: Aarhus

HS3 sende tekst til display via MySensors

Indlæg af Ole » 29 nov 2015, 09:41

Så fik jeg hul på bylden og fik endelig tid til at lave min første MySensor, og jeg har installeret Henriks HS3 plug-in.

Jeg vil gerne kunne sende en tekststreng til en MySensor, så jeg kan vise det på et display (4x16), kan man det med plug-in'en som det er nu?

Jeg kan forresten ikke sove længere, fordi jeg ligger og laver MySensor noder i søvne :)

Ole
Indlæg: 96
Tilmeldt: 28 jun 2014, 19:44
Geografisk sted: Aarhus

Re: HS3 sende tekst til display via MySensors

Indlæg af Ole » 26 jan 2016, 21:23

Nå, jeg endte med at løse det med fusk - det er altid godt.

Jeg er ikke bleg for at vise min grimme kode, så here goes - til inspiration for andre:

Kode: Vælg alt


/**
 * 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.0 - Henrik Ekblad
 * 
 * DESCRIPTION
 * Example sketch showing how to request time from controller which is stored in RTC module
 * The time and temperature (DS3231/DS3232) is shown on an attached Crystal LCD display
 * 
 *
 * Wiring (radio wiring on http://www.mysensors.org)
 * ------------------------------------
 * Arduino   RTC-Module     I2C Display 
 * ------------------------------------
 * GND       GND            GND
 * +5V       VCC            VCC
 * A4        SDA            SDA
 * A5        SCL            SCL
 *
 * http://www.mysensors.org/build/display
 *
 */


#include <SPI.h>
#include <MySensor.h>  
#include <Time.h>  
#include <DS3232RTC.h>  // A  DS3231/DS3232 library
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

//Standard
        #define RELAY_1                            20  // Arduino Digital I/O pin number for first relay (second on pin+1 etc)
        #define NUMBER_OF_RELAYS                11 // Total number of attached relays
        #define RELAY_ON                        0  // GPIO value to write to turn on attached relay
        #define RELAY_OFF                        1 // GPIO value to write to turn off attached relay
        #define BUTTON_RELAY_ID                    2  // Child Attached to Button Control

// Other Stuff
//        Bounce debouncer = Bounce();
        int numSensors=                            0;


MySensor gw;
// Initialize Button message
MyMessage msg(BUTTON_RELAY_ID,V_LIGHT);

boolean state = false;
boolean timeReceived = false;
int onOffBits = 0;
String names[NUMBER_OF_RELAYS +1] = {
  "",
  "TV", 
  "Spis", 
  "K0k", 
  "Bad", //
  "Gang", 
  "Emma", //
  "Gst", //
  "Cha", //
  "Sov", 
  "Spare1", // 
  "Spare2" //
  };
  String linje[3] = {"", "", ""};

unsigned long lastUpdate=0, lastRequest=0;
// Initialize display. Google the correct settings for your display. 
// The follwoing setting should work for the recommended display in the MySensors "shop".
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);

void setup()  
{  
            gw.begin(incomingMessage, AUTO, false);
 
  
  // Send the sketch version information to the gateway and Controller
  gw.sendSketchInfo("Oles relay", "1.0");
  

  // Request latest time from controller at startup
//  gw.requestTime(receiveTime);  
  //Present relays to gateway
  for (int sensor=1; sensor <=NUMBER_OF_RELAYS;sensor++) {
      gw.present(sensor, S_LIGHT);
  }
  
  // initialize the lcd for 16 chars 2 lines and turn on backlight
  lcd.begin(16,2); 
}

 
void loop()     
{     
          // Alway process incoming messages whenever possible
          gw.process();
}
        void incomingMessage(const MyMessage &message) {
        if (message.isAck()) {
             Serial.println("This is an ack from gateway");
         } else if (message.type==V_LIGHT) {
              state = message.getBool();
             // Change relay int
              onOffBits ^= (-state ^ onOffBits) & (1 << message.sensor);
            //Re-Create string
            linje[1]= "";
            linje[2]= "";
        for (int i = 1; i <= NUMBER_OF_RELAYS; i++) {
          if (((onOffBits >> i) & 1) == 1) {
            if ((linje[1].length () + names[i].length()) <= 16) {
              linje[1] += names[i];                          
            } else if ((linje[2].length () + names[i].length()) <= 16){
              linje[2] += names[i];              
            }
          }
        }
            lcd.home();
            lcd.print("                ");
            lcd.setCursor( 0, 1 );
            lcd.print("                ");
            lcd.home();
            lcd.print(linje[1]);
            lcd.setCursor( 0, 1 );
            lcd.print(linje[2]);

            }
            //Send the msg
            gw.send(msg.setSensor(message.sensor).set(state), true);
       } 
        



void updateDisplay(){

  // Print date and time 
  lcd.home();
//  lcd.print(" ");
//  lcd.print(tmYearToCalendar(tm.Year)-2000);

  lcd.print("gammel ");

  // Go to next line and print temperature
  lcd.setCursor ( 0, 1 );  
  lcd.print("tekst");
//  lcd.print(RTC.temperature()/4);
//  lcd.print("C");
}


void printDigits(int digits){
  if(digits < 10)
    lcd.print('0');
  lcd.print(digits);
}

Displayet laver 11 childs, som så skal "associeres" med 11 dør-sensorer - det gør jeg med events..
Jeg skal kun bruge de 9 ligenu.

Det er også meningen, at der skal oprettes en "button", som skal kunne sende besked fra displayet til Homeseer, men det er jeg ikke nået til endnu.

Som det virker nu, skriver den på displayet de strings ("Bad", "TV", etc.) som er ON - og slettet dem når de er off. Den laver selv linjeskift når der ikke er plads.

Jeg mangler stadig at få displayet til at requeste status når det tændes - så indtil alle vinduer har skiftet status viser displayet ikke rigtigt.

...Ole

Brugeravatar
Bri_Jac
Indlæg: 979
Tilmeldt: 05 nov 2008, 21:48
Geografisk sted: Bunkeflostrand

Re: HS3 sende tekst til display via MySensors

Indlæg af Bri_Jac » 29 jan 2016, 20:13

Nice, husk at tage et lille billede og upload :-) af dit display så vi kan se hvordan det ser ud

Ole
Indlæg: 96
Tilmeldt: 28 jun 2014, 19:44
Geografisk sted: Aarhus

Re: HS3 sende tekst til display via MySensors

Indlæg af Ole » 30 jan 2016, 08:53

Ja, selvfølgelig skal der billeder til!

Af uransagelige årsager er displayet ikke særligt fotogent.. Min Nexus5 går helt amok og blinker når jeg forsøger at stille skarpt på skærmen.. (måske noget refresh-rate, ved det ikke?)

Anyway jeg har fået et par billeder trods alt:

Billede
Billede

Det er ikke så kønt som jeg gerne ville have det, men hvis jeg skal have plads til at alle vinduer kan være åbne kan jeg ikke finde andre løsninger (med det display)

I min drømmeverden, så skriver den "Soveværelse", når der kun er det ene vindue åbent, og så komprimerer den teksten når der kommer flere vinduer, men det bliver for lang en kode - i hvert fald for nu..

Brugeravatar
Bri_Jac
Indlæg: 979
Tilmeldt: 05 nov 2008, 21:48
Geografisk sted: Bunkeflostrand

Re: HS3 sende tekst til display via MySensors

Indlæg af Bri_Jac » 30 jan 2016, 17:09

Det ser da fint ud

Ole
Indlæg: 96
Tilmeldt: 28 jun 2014, 19:44
Geografisk sted: Aarhus

Re: HS3 sende tekst til display via MySensors

Indlæg af Ole » 09 feb 2016, 10:05

Så kom jeg i mål med kassen...

Billede
Billede
Billede
Billede

Det sidder LIDT pænere når kassen er lukket, men jeg er ikke sikker på, at det vil kunne CE godkendes (heldigvis er det jo kun 5V, så det behøver det heller ikke)

Nu venter jeg så bare på at kinamanden sender mig mine Pro Mini'er, så jeg kan få lavet vindues-sensorerne :D

Brugeravatar
Bri_Jac
Indlæg: 979
Tilmeldt: 05 nov 2008, 21:48
Geografisk sted: Bunkeflostrand

Re: HS3 sende tekst til display via MySensors

Indlæg af Bri_Jac » 09 feb 2016, 21:59

Sej kasse du har lavet - er det laserskåret balsatræ? paskram så du "bare" trykker det sammen? hvordan har du lavet den?

Uden at kunne se ledningslængden fra strømforsyning til NRF24L01+ modul -men det ser "langt ud", så kan der med fordel monteres en 4,7uF elektrolyt cap hen over GND/VCC må nrf24L01+ modulet

Ole
Indlæg: 96
Tilmeldt: 28 jun 2014, 19:44
Geografisk sted: Aarhus

Re: HS3 sende tekst til display via MySensors

Indlæg af Ole » 09 feb 2016, 22:51

Tak for tippet. Jeg har allerede sat en 4,7uF elektrolyt cap på.

Billede

Når nu jeg skal til at lave vindues-sensorerne, som skal være batteridrevne - vil en sådan 4,7uF elektrolyt cap dræne batteriet hurtigere?

Ole
Indlæg: 96
Tilmeldt: 28 jun 2014, 19:44
Geografisk sted: Aarhus

Re: HS3 sende tekst til display via MySensors

Indlæg af Ole » 09 feb 2016, 22:52

En af ledningerne er i øvrigt allerede knækket af. Det er noget klamp jeg har lavet, men det var de ledninger jeg havde til rådighed :/

Ole
Indlæg: 96
Tilmeldt: 28 jun 2014, 19:44
Geografisk sted: Aarhus

Re: HS3 sende tekst til display via MySensors

Indlæg af Ole » 09 feb 2016, 22:57

[quote="Bri_Jac"]Sej kasse du har lavet - er det laserskåret balsatræ? paskram så du "bare" trykker det sammen? hvordan har du lavet den?
[/quote]

Den er laserskåret - svg filen er lavet med makercase og så var jeg svineheldig med at mine målinger til hullet til displayet passede 100% perfekt i første hug. Du skal presse lidt til displayet for at få det på plads, og så sidder det er - uden skruer, lim eller andet :)

Jeg ved ikke hvad der er for noget træ - det var overskuds træ, som jeg fandt i OSAA (osaa.dk) - men det er ikke balsa.

Sådan et display er i øvrigt 71x24mm plus halvelen af laserstrålens bredde. :)

Brugeravatar
Bri_Jac
Indlæg: 979
Tilmeldt: 05 nov 2008, 21:48
Geografisk sted: Bunkeflostrand

Re: HS3 sende tekst til display via MySensors

Indlæg af Bri_Jac » 11 feb 2016, 22:05

Jeg ville nu ikke umiddelbart selv sætte en 4,7uF cap på en batterinode, da et batteri med korte ledninger jo også er en kondensator :-)
Det er mere når der anvendes en strømforsyning at der IKKE er noget overskud hvis der opstår et hurtigt øget strømforbrug. Nu er jeg også lidt pirrelig mht batteriforbrug og en elektrolyt kondensator er stjæler jo strøm 23~100uA ud fra nedenstående link. Det er jo måske op til en måneds strømforbrug i lifespan fra et batteri...

typically of the order of about 5-20 μA per µF
http://www.electronics-tutorials.ws/cap ... cap_3.html

Besvar