Skip to content
  • MySensors
  • OpenHardware.io
  • Categories
  • Recent
  • Tags
  • Popular
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Brand Logo
  1. Home
  2. My Project
  3. Count car-starts

Count car-starts

Scheduled Pinned Locked Moved My Project
47 Posts 5 Posters 12.7k Views 3 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • tbowmoT Offline
    tbowmoT Offline
    tbowmo
    Admin
    wrote on last edited by
    #41

    @flopp

    There is an howto here http://www.instructables.com/id/Hack-an-ELM327-Cable-to-make-an-Arduino-OBD2-Scann/ looks pretty simple to get going, and read out the RPM's..

    F 1 Reply Last reply
    0
    • tbowmoT tbowmo

      @flopp

      There is an howto here http://www.instructables.com/id/Hack-an-ELM327-Cable-to-make-an-Arduino-OBD2-Scann/ looks pretty simple to get going, and read out the RPM's..

      F Offline
      F Offline
      flopp
      wrote on last edited by
      #42

      @tbowmo
      Nice, I will test in a few weeks

      1 Reply Last reply
      0
      • F Offline
        F Offline
        flopp
        wrote on last edited by
        #43

        I have now solve the problem with storing data in Domoticz at correct day.

        I have another node that send back the same value as it is right now, every 2 hours

        1 Reply Last reply
        0
        • F Offline
          F Offline
          flopp
          wrote on last edited by flopp
          #44

          Version 1.12, changes gw.wait when asking for VAR from 5 sec to 1 sec. also added support for Buzzer on D3

          1 Reply Last reply
          0
          • F Offline
            F Offline
            flopp
            wrote on last edited by
            #45
            This post is deleted!
            1 Reply Last reply
            0
            • F Offline
              F Offline
              flopp
              wrote on last edited by flopp
              #46

              Keep-alive version. I noticed when this Node didn't get any response from Controller it send back 0, which means that this day will be very many starts

              // Made by Daniel Nilsson
              // Tested with Domoticz 3.4967
              // Version 1.1
              // 2016-05-10
              
              //Keep-alive since Domoticz seems to not storing data if not data comes in for 3 hours(user setting)
              
              #include <SPI.h>
              #include <MySensor.h>
              
              #define CHILD_ID 0                          // Id of the sensor child
              #define NODE_ID 7                        // same ID as real Car Counter
              
              int Controller;                             // Current start counts from Controller, like Domoticz
              
              MySensor gw;
              MyMessage volumeMsg(CHILD_ID,V_RAIN);
              MyMessage lastCounterMsg(CHILD_ID,V_VAR1);
              
              void setup()
              {          
                delay(500);   // wait for radio
                
                //Begin
                gw.begin(incomingMessage, NODE_ID);
                // Register this device as Rain sensor (will not show in Domoticz until first value arrives)
                gw.present(CHILD_ID, S_RAIN);       
              }
              
              void loop()
              { 
                
                  //Ask for starts from Controller.
                
                    Serial.println("Request start counts");
                    //gw.request(CHILD_ID, V_VAR1);
                    while (Controller == 0) {
                      gw.request(CHILD_ID, V_VAR1);
                      Serial.println("No response from Controller");
                      gw.wait(60000);
                      }
                    gw.wait(5000);
                    
              if (!resend((volumeMsg.set(Controller)), 5))return;
              gw.wait(1000);
              gw.sleep(120*60000); //less then timeout in Controller
              }
              
              // check if "st:fail" during gw.send, thanks n3ro
              bool resend(MyMessage &msg, int repeats)
              {
                int repeat = 1;
                boolean sendOK = false;
                int repeatdelay = 2000;
              
                while ((sendOK == false) and (repeat < repeats)) {
                  if (gw.send(msg)) {
                    sendOK = true;
                  }
                  else {
                    sendOK = false;
                    Serial.print("Error ");
                    Serial.println(repeat);
                  }
                  repeat++; delay(repeatdelay);
                }
                if (sendOK == false && repeat == repeats){
                  return false;
                }
                return true;
              }
              
              //Read if we have a incoming message.
              void incomingMessage(const MyMessage &message) {
                if (message.type==V_VAR1) {
                  Controller = message.getULong();
                  //pcReceived = true;
                  Serial.print("Received start counts from Controller: ");
                  Serial.println(Controller);   
                }
              }
              
              1 Reply Last reply
              1
              • F Offline
                F Offline
                flopp
                wrote on last edited by flopp
                #47

                Version 1.13 changed to fixed NODE_ID

                // Made by Daniel Nilsson
                // Tested with Domoticz 3.5721
                // 2016-12-10
                
                #include <SPI.h>
                #include <MySensor.h>
                
                #define CHILD_ID 0                          // Id of the sensor child
                #define NODE_ID 7                            // a number or AUTO to let controller assign
                #define SKETCH_NAME "Car start counter"     // Change to a fancy name you like
                #define SKETCH_VERSION "1.13"                // Your version
                
                int Controller;                             // Current start counts from Controller, like Domoticz
                boolean pcReceived = false;                 // If we have recieved the start counts from Controller or not 
                int starts;                                 // summary of all starts to be sent to Controller
                int eeprom;                                 // start counts read from/to be stored in EEPROM
                
                
                MySensor gw;
                MyMessage volumeMsg(CHILD_ID,V_RAIN);
                MyMessage lastCounterMsg(CHILD_ID,V_VAR1);
                
                void setup()
                {          
                  pinMode(3,OUTPUT);
                  delay(2*45000);  // Allow time if USB/cigarette plug is powered before you turned the key
                  digitalWrite(3,HIGH);
                  delay(300);
                  digitalWrite(3,LOW);
                  delay(300);
                  digitalWrite(3,HIGH);
                  delay(300);
                  digitalWrite(3,LOW);
                  //Begin
                  gw.begin(incomingMessage, NODE_ID, false);
                  
                  // Send the Sketch Version Information to the Gateway
                  gw.sendSketchInfo(SKETCH_NAME, SKETCH_VERSION);
                
                  // Register this device as Rain sensor (will not show in Domoticz until first value arrives)
                  gw.present(CHILD_ID, S_RAIN);       
                  Serial.println("");
                  eeprom = gw.loadState(0);                       // read EEPROM
                  Serial.print(eeprom);                           // print EEPROM
                  Serial.println(" starts have not been sent");
                  Serial.println("add 1 start");
                  Serial.print(eeprom);
                  Serial.print("+1=");
                  eeprom = eeprom + 1;
                  Serial.println(eeprom);
                  gw.saveState(0,eeprom);                         // store to EEPROM at position 0
                  Serial.println("");
                  
                  Serial.println("Startup completed");
                }
                
                void loop()
                { 
                  
                    //See if we have the start counts from Controller - and ask for it if we dont.
                    if (!pcReceived) {
                      Serial.println("Request start counts");
                      gw.request(CHILD_ID, V_VAR1);
                      gw.wait(1000);
                      return;
                    }
                
                Serial.println("");
                eeprom = gw.loadState(0);                     // read EEPROM
                Serial.print(eeprom);
                Serial.println(" starts have not been sent");
                Serial.print(Controller);
                Serial.println(" starts from Controller");    
                starts = Controller + eeprom;                 // total starts
                Serial.print(eeprom);
                Serial.print("+");
                Serial.print(Controller);
                Serial.print("=");
                Serial.println(starts);
                Serial.print("Send ");
                Serial.print(starts);
                Serial.println(" to Controller");
                Serial.println("");
                
                if (!resend((volumeMsg.set(starts)), 6))return;
                if (!resend((lastCounterMsg.set(starts)), 6)) return;
                
                Serial.println("");
                Serial.println("store 0 to EEPROM");
                gw.saveState(0,0);                            // set 0 start to EEPROM, all have been sent
                Serial.println("sleep");                      // mission accomplished
                digitalWrite(3,HIGH);
                  delay(900);
                  digitalWrite(3,LOW);
                  
                while(1){}
                
                }
                
                // check if "st:fail" during gw.send, thanks n3ro
                bool resend(MyMessage &msg, int repeats)
                {
                  int repeat = 1;
                  boolean sendOK = false;
                  int repeatdelay = 2000;
                
                  while ((sendOK == false) and (repeat < repeats)) {
                    if (gw.send(msg)) {
                      sendOK = true;
                    }
                    else {
                      sendOK = false;
                      Serial.print("Error ");
                      Serial.println(repeat);
                    }
                    repeat++; delay(repeatdelay);
                  }
                  if (sendOK == false && repeat == repeats){
                    return false;
                  }
                  return true;
                }
                
                //Read if we have a incoming message.
                void incomingMessage(const MyMessage &message) {
                  if (message.type==V_VAR1) {
                    Controller = message.getULong();
                    pcReceived = true;
                    Serial.print("Received start counts from Controller: ");
                    Serial.println(Controller);   
                  }
                }
                
                1 Reply Last reply
                0
                Reply
                • Reply as topic
                Log in to reply
                • Oldest to Newest
                • Newest to Oldest
                • Most Votes


                17

                Online

                11.7k

                Users

                11.2k

                Topics

                113.0k

                Posts


                Copyright 2019 TBD   |   Forum Guidelines   |   Privacy Policy   |   Terms of Service
                • Login

                • Don't have an account? Register

                • Login or register to search.
                • First post
                  Last post
                0
                • MySensors
                • OpenHardware.io
                • Categories
                • Recent
                • Tags
                • Popular