Buggfix Plus
Aktuellt datum och tid: 20.51 2018-05-27

Alla tidsangivelser är UTC + 1 timme




Svara på tråd  [ 40 inlägg ]  Gå till sida Föregående  1, 2, 3
Författare Meddelande
InläggPostat: 07.03 2017-04-14 

Blev medlem: 19.03 2015-11-28
Inlägg: 131
Sure. Koden är inget konstigt alls, bara lite logik. wifi_mqtt_common.h bifogar jag inte, det är i princip bara en wifi+pubsubclient implementation. Codelibrary.h innehåller bara en delay() metod.


Kod: [Expandera/Minimera] [Hämta] (Untitled.txt)
// Burn settings
// Generic ESP8266 Module // DIO 40mhz // Serial // 80mhz // 4m (1m spiffs) // disabled // none // ck // 115200

#define MAJORVERSION 1
#define MINORVERSION 2

#include <wifi_mqtt_common.h>
#include <CodeLibrary.h>

String DEVICE_NAME = "mailbox";
const char* topicConnected = "/device/mailbox/connected";
const char* topicLid1Opened = "/device/mailbox/lid1";
const char* topicLid2Opened = "/device/mailbox/lid2";
const char* topicLid1NotClosed = "/device/mailbox/lid1_notclosed";
const char* topicLid2NotClosed = "/device/mailbox/lid2_notclosed";
const int pinLid1 = 12;
const int pinLid2 = 13;
bool lid1Open = false;
bool lid2Open = false;
const int pinControlEnable = 14;

WifiMqtt wifiMqtt;
CodeLibrary codeLibrary;

void setup() {
  //Serial.begin(115200);
  codeLibrary.wait(100);
  Serial.println("\n\nSetup. Version " + String(MAJORVERSION) + "." + String(MINORVERSION) + ". sdk " + String(ESP.getSdkVersion()));

  pinMode(pinLid1, INPUT);
  pinMode(pinLid2, INPUT);
  pinMode(pinControlEnable, OUTPUT);

  // Turn *ON* ENABLE pin
  digitalWrite(pinControlEnable, HIGH);

  wifiMqtt.initSettings("iotMailbox", "mqMailbox", IPAddress(192, 168, 0, 197), IPAddress(192, 168, 0, 1));
  wifiMqtt.SetDisconnectAfterSent(true);
  wifiMqtt.setDebugOn(true);

  Serial.println("Setup() done.");

  Serial.println("Checking if needed to send notification.");
  checkIfNeedToSendNotification();

  // Check for firmware update
  wifiMqtt.CheckForFirmwareUpdate(MAJORVERSION, MINORVERSION);

  if (lid1Open || lid2Open) {
    waitForLidsToClose();
  }

  Serial.println("Sleeping.");

  // Turn *OFF* ENABLE pin
  digitalWrite(pinControlEnable, LOW);
}

// -------------------------------------------------

void checkIfNeedToSendNotification() {
  lid1Open = (HIGH == digitalRead(pinLid1));
  lid2Open = (HIGH == digitalRead(pinLid2));

  if (lid1Open || lid2Open) {
    Serial.println(lid1Open ? "lid1 open" : "lid2 open");

    String jsonResult = "{\"lidOpen\":\"" + String(lid1Open ? "lid1" : "lid2") + "\",";
    jsonResult += "\"ver\":" + String(MAJORVERSION) + "." + String(MINORVERSION) + ",";
    jsonResult += "\"sdk\":\"" + String(ESP.getSdkVersion()) + "\",";
    // Analog value is 0-1024, 4xAA = 4.8 volt (but is ~5.1 fully charged)
    double batteryVoltage = analogRead(0) * 5.1 / 1024;
    jsonResult += "\"vcc\":" + String(batteryVoltage, 2);
    jsonResult += "}";

    wifiMqtt.sendData(lid1Open ? topicLid1Opened : topicLid2Opened, jsonResult);
  }
}

// -------------------------------------------------

void waitForLidsToClose() {
  // Don't continue until the lids are closed again (or time out)
  unsigned long startMillis = millis();
  int timeoutCount = 0;
  bool lid1Open = (HIGH == digitalRead(pinLid1));
  bool lid2Open = (HIGH == digitalRead(pinLid2));

  while (lid1Open || lid2Open || (millis() - startMillis < 5000)) {
    timeoutCount++;

    // Every 30 seconds (sleep 10ms)
    if (timeoutCount % 3000 == 0) {
      if (lid1Open) {
        wifiMqtt.sendData(topicLid1NotClosed, String(timeoutCount));
      }
      if (lid2Open) {
        wifiMqtt.sendData(topicLid2NotClosed, String(timeoutCount));
      }

      // Abort
      if (timeoutCount > 9000) {
        return;
      }
    }
    codeLibrary.wait(10);

    lid1Open = (HIGH == digitalRead(pinLid1));
    lid2Open = (HIGH == digitalRead(pinLid2));

     // If lids still are open, reset timer so we still wait x seconds
    if (lid1Open || lid2Open) {
      Serial.println("Resetting timer.");
      startMillis = millis();
    }
  }
}

// -------------------------------------------------

void loop() {
  // Do nothing, all is done in Setup()
}


Upp
 Profil  
 
InläggPostat: 12.26 2017-04-14 

Blev medlem: 17.06 2012-04-29
Inlägg: 1325
hanpa skrev:
Ingen större risk att svensk polis skulle rycka ut pga elektronik i brevlådan...

Följ dagstidningarna så ser du att det händer lite då och då även i Sverige. http://www.expressen.se/nyheter/misstan ... -brevlada/
Vanligaste sättet svensk polis desarmerar okända föremål är att skjuta tvärs igenom misstänkta föremålet med gevär.
Det borde vara allmänt bekant att triggnivån hos polisen är just nu rätt låg.
Triggnivån hos lokala brevbäraren varierar säkert, men denne har säkert sett film-bomber, dvs blinkande lysdioder och lite sladdar som går in i ett paket.
Och alla vet ju att absolut säkrast indikationen på att det är en skarpladdad bomb är att det finns ett synligt räkneverk.
Polisen lär sej däremot att inte göra någon bedömning alls utan ta det säkra för det osäkra.

Har själv aldrig gjort någon post-detektor, gjorde däremot en postbils-detektor. En reflexdetektor i brevlådan avläste om bilen som stannat mitt för brevlådan hade rätt post-gula färg. Om så var fallet öppnades brevlådelocket automatisk mha ett litet rc-servo, så att brevbäraren lättare kunde stoppa i breven. Servot knuffade bara på locket och var inte mekaniskt anslutet, så det gick fortfarande öppna locket som vanligt. Går säkert utveckla detta så man slipper falsk-indikering av att man själv stannar med bil vid brevlådan.

Googles förslag till modernisering av vanliga brevlådor: https://youtu.be/hydLZJXG3Tk


Upp
 Profil  
 
InläggPostat: 13.44 2017-04-14 
Utsparkad, på semester
Användarvisningsbild

Blev medlem: 21.54 2016-11-22
Inlägg: 639
Ort: Hemort
Ditt exempel från Expressen är ju inte att brevbäraren triggat på elektronik i brevlådan och kontaktat polisen, utan att en boende sett det i sin egen brevlåda och blivit orolig. Så det är nog ingen större risk att man skulle få besök av polisen bara för att man installerar lite elektronik i brevlådan. Vill man minska den redan låga risken ytterligare kan man ju försöka dölja det så gott det går och ev. komplettera med någon informationstext.


Upp
 Profil  
 
InläggPostat: 13.56 2017-04-14 
EF Sponsor
Användarvisningsbild

Blev medlem: 17.53 2010-01-04
Inlägg: 4407
Ort: Skogen mellan Uppsala-Gävle
Väldigt vänligt att du delar med dig av både schema och kod sommarlov, det uppskattas mycket :tumupp:
Jag körde fast rejält i att programmera min radiomodul och får jag inte igång det där inom rimlig tid så tänkte jag testa vad en ESP går för. Communityt för dessa ESP:er verkar ju vara otroligt stort.
Just nu ligger två andra projekt i slutfasen och efter det kommer jag ta upp detta projekt.

"Den långa vägen" i projektämnet syftar på fler saker än distansen till lådan. Det här projektet kommer ta mycket mer tid än vad vad det kan verka, för det här är startskottet till lite automation här hemma.
Tanken är att den batteridrivna och radiopratande noden ska får många bröder och systrar, därav vill jag verkligen få till en stabil plattform där tex räckvidden inte blir ett framtida problem.
"Centralen" är inte heller byggd. Det blir mest troligt en linuxserver som med hjälp av lite olika radiomoduler kan agera hjärna. Ja, det är mycket som pågår i bakgrunden som inte direkt hör till postlådan.

@hanpa:
En gammal avlagd telefon som SMS:ar har jag som nödlösning. Men det är nästa så jag i stället skippar postindikeringen om jag måste ta den vägen.
En visuell indikering blir det nog inte heller. Då faller lite idén.

@MadModder:
Jag har fortfarande tro på mänskligheten och fram tills vi inte fått något post stulen så kommer min stora lucka förbli olåst. Det är ju ingen skillnad på att ha den olåst som folk som har dom "vanliga" gröna plastlådorna där man kan öppna locket fullt.

@E Kafeman:
Postbilsigenkänningen intressant metod. Den skulle helt klart fungera om vår låda hade stått ensam, men det gör den tyvärr inte. Då vi inte är prenumeranter av morgontidning (men grannarna) och att morgonposten körs ut av Bring så fungerar det nog inte i det här fallet. Dock en mycket intressant metod.


Upp
 Profil  
 
InläggPostat: 14.42 2017-04-14 

Blev medlem: 19.03 2015-11-28
Inlägg: 131
Citera:
Väldigt vänligt att du delar med dig av både schema och kod sommarlov, det uppskattas mycket :tumupp:

Np.

Citera:
Jag körde fast rejält i att programmera min radiomodul och får jag inte igång det där inom rimlig tid så tänkte jag testa vad en ESP går för. Communityt för dessa ESP:er verkar ju vara otroligt stort.

Jag kan varmt rekommendera ESP, det är en trevlig och kraftfull liten grej. Kan väl dock erkänna att jag inte gillar den då den tar ganska mycket kräm (~70-250mA) då den körs (men när den sover är den nere i ~15uA). Jag har börjat använda tex ATtiny85 som "trigger" av events, och låter denna 85:a sen väcka esp:n som publiserar event. Hade kanske varit skönt att ha en annan MCU som klarar av både och.

Citera:
"Centralen" är inte heller byggd. Det blir mest troligt en linuxserver som med hjälp av lite olika radiomoduler kan agera hjärna. Ja, det är mycket som pågår i bakgrunden som inte direkt hör till postlådan.


Jag kör själv mqtt som "central" och sen Openhab som min "affärslogik"-server. Jag är väldigt glad över att jag installerade mqtt för ett par år sedan, den är fantastisk.


Upp
 Profil  
 
InläggPostat: 17.02 2017-04-14 
EF Sponsor
Användarvisningsbild

Blev medlem: 17.53 2010-01-04
Inlägg: 4407
Ort: Skogen mellan Uppsala-Gävle
Det var goda nyheter.
Har börjat läsa lite om MQTT och ett system som kallas Mosquito. För min del, utan tidigare erfarenhet, så gäller det att välja efter hur mycket nätet kan hjälpa mig.

Ps. Välkommen till forumet förresten. Du behövs :) Ds


Upp
 Profil  
 
InläggPostat: 19.10 2017-04-14 
Co Admin
Användarvisningsbild

Blev medlem: 16.04 2006-04-16
Inlägg: 8502
Jag har också börjat snegla på ESP och tänkte först börja med ESP8266 för jag tänkte att det räcker för mina behov.

Sen undersökte jag lite dock och kom fram till några punkter som gör att jag tänker skippa 8266 och gå direkt på ESP32
  • ESP32 drar bara 5 uA i deep sleep: https://esp32.com/viewtopic.php?f=2&t=1133&p=5873
  • Eftersom den är snabbare så startar den upp och skickar datat som ska skickas fortare vilket gör att den åter kan gå ner i sleep på kortare tid än vad 8266 gör.
  • Kostnaden är ungefär densamma (6€ hos Olimex).
  • Bluetooth
  • CANbus
  • Mera IO, bättre ADC osv.


Upp
 Profil  
 
InläggPostat: 19.17 2017-04-14 
Användarvisningsbild

Blev medlem: 13.58 2016-04-05
Inlägg: 1314
Ort: Helsingfors
Med riktantenner är det kanske inte otänkbart att klara det avståndet till postlådan med ESPmodul.

Har skaffat ett par moduler av den äldre familjen, men har ännu inte hunnit göra nåt vettigt med dem.


Upp
 Profil  
 
InläggPostat: 19.24 2017-04-14 
Utsparkad, på semester
Användarvisningsbild

Blev medlem: 21.54 2016-11-22
Inlägg: 639
Ort: Hemort
Magnus_K skrev:
Det var goda nyheter.
Har börjat läsa lite om MQTT och ett system som kallas Mosquito. För min del, utan tidigare erfarenhet, så gäller det att välja efter hur mycket nätet kan hjälpa mig.

Ps. Välkommen till forumet förresten. Du behövs :) Ds


Du menar nog Mosquitto. Jag trodde först att MQTT var krångligt men tvärtom, det var busenkelt att använda. Mycket enkelt att installera Mosquitto på linuxservern och sen var det bara att köra.


Upp
 Profil  
 
InläggPostat: 19.31 2017-04-14 
Utsparkad, på semester
Användarvisningsbild

Blev medlem: 21.54 2016-11-22
Inlägg: 639
Ort: Hemort
mrfrenzy skrev:
Jag har också börjat snegla på ESP och tänkte först börja med ESP8266 för jag tänkte att det räcker för mina behov.

Sen undersökte jag lite dock och kom fram till några punkter som gör att jag tänker skippa 8266 och gå direkt på ESP32
  • ESP32 drar bara 5 uA i deep sleep: https://esp32.com/viewtopic.php?f=2&t=1133&p=5873
  • Eftersom den är snabbare så startar den upp och skickar datat som ska skickas fortare vilket gör att den åter kan gå ner i sleep på kortare tid än vad 8266 gör.
  • Kostnaden är ungefär densamma (6€ hos Olimex).
  • Bluetooth
  • CANbus
  • Mera IO, bättre ADC osv.


ESP32 är dyrare men visst om man behöver det så. 6€ hos olimex är väl bara för en modul utan något kretskort. Men det är ju inga jättepengar ändå. Finns för strax under $7 på kort med kringkomponenter och USB-port hos aliexpress.

Brukar köra med Wemos D1 mini (ESP8266), sjukt billigt med $3 inklusive frakt.


Upp
 Profil  
 
Visa inlägg nyare än:  Sortera efter  
Svara på tråd  [ 40 inlägg ]  Gå till sida Föregående  1, 2, 3

Alla tidsangivelser är UTC + 1 timme


Vilka är online

Användare som besöker denna kategori: Inga registrerade användare och 5 gäster


Du kan inte skapa nya trådar i denna kategori
Du kan inte svara på trådar i denna kategori
Du kan inte redigera dina inlägg i denna kategori
Du kan inte ta bort dina inlägg i denna kategori
Du kan inte bifoga filer i denna kategori

Sök efter:
Hoppa till:  
    Electrokit
Drivs av phpBB® Forum Software © phpBB Group
Swedish translation by Peetra & phpBB Sweden © 2006-2010