Den långa vägen till postlådan

Berätta om dina pågående projekt.
Användarvisningsbild
sommarlov
Inlägg: 514
Blev medlem: 28 november 2015, 19:03:40
Ort: 08

Re: Den långa vägen till postlådan

Inlägg av sommarlov »

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: Markera allt

// 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()
}
E Kafeman
Inlägg: 3238
Blev medlem: 29 april 2012, 18:06:22

Re: Den långa vägen till postlådan

Inlägg av E Kafeman »

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:
Användarvisningsbild
hanpa
Utsparkad, på semester
Inlägg: 639
Blev medlem: 22 november 2016, 21:54:43
Ort: Hemort

Re: Den långa vägen till postlådan

Inlägg av hanpa »

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.
Användarvisningsbild
Magnus_K
EF Sponsor
Inlägg: 5854
Blev medlem: 4 januari 2010, 17:53:25
Ort: Skogen mellan Uppsala-Gävle

Re: Den långa vägen till postlådan

Inlägg av Magnus_K »

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.
Användarvisningsbild
sommarlov
Inlägg: 514
Blev medlem: 28 november 2015, 19:03:40
Ort: 08

Re: Den långa vägen till postlådan

Inlägg av sommarlov »

Väldigt vänligt att du delar med dig av både schema och kod sommarlov, det uppskattas mycket :tumupp:
Np.
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.
"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.
Användarvisningsbild
Magnus_K
EF Sponsor
Inlägg: 5854
Blev medlem: 4 januari 2010, 17:53:25
Ort: Skogen mellan Uppsala-Gävle

Re: Den långa vägen till postlådan

Inlägg av Magnus_K »

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
Användarvisningsbild
mrfrenzy
Co Admin
Inlägg: 14818
Blev medlem: 16 april 2006, 17:04:10

Re: Den långa vägen till postlådan

Inlägg av mrfrenzy »

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.
Användarvisningsbild
rvl
Inlägg: 5720
Blev medlem: 5 april 2016, 14:58:53
Ort: Helsingfors

Re: Den långa vägen till postlådan

Inlägg av rvl »

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.
Användarvisningsbild
hanpa
Utsparkad, på semester
Inlägg: 639
Blev medlem: 22 november 2016, 21:54:43
Ort: Hemort

Re: Den långa vägen till postlådan

Inlägg av hanpa »

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.
Användarvisningsbild
hanpa
Utsparkad, på semester
Inlägg: 639
Blev medlem: 22 november 2016, 21:54:43
Ort: Hemort

Re: Den långa vägen till postlådan

Inlägg av hanpa »

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.
Skriv svar