Code Monkey home page Code Monkey logo

homebridge-acurite-temperature's Introduction

homebridge-acurite-temperature

NPM Downloads

Please note I have changed approach and have switched to a more robust plugin Homebridge-RTL and have stopped further development on this particular plugin.

After dealing with issues with my refrigerator not maintaining temperature, I bought the AcuRite Digital Wireless Fridge and Freezer Thermometer so I could track what was happening. And my first thought after buying it was where was the integration into HomeBridge? So I quickly cobbled this together using a RPI, RTL_433 and a RTL SDR

  • Display of temperature and low battery
  • Also shows "not responding" if the sensor stops sending data
  • Archives results every hour to a google spreadsheet
  • Support the graphing feature of the Eve app for trends

I have tested this on both a Mac and a RPI3

Installation

  1. Install Homebridge using sudo npm install -g homebridge
  2. Install this plugin sudo npm install -g homebridge-acurite-temperature
  3. Install RTL_433 following the instructions here
  4. Configure homebridge

Configuration

  • platform: "Acurite"
  • name: "Acurite"
  • devices - 1F: Name for fridge sensor
  • devices - 2R: Name for freezer sensor
  • storage: ( optional ) storage of chart graphing data for history graphing, either fs or googleDrive, defaults to fs
  • spreadsheetId ( optional ) Log data to a google sheet, this is part of the URL of your spreadsheet. ie the spreadsheet ID in the URL https://docs.google.com/spreadsheets/d/abc1234567/edit#gid=0 is "abc1234567".

Example configuration:

"platforms": [{
  "platform": "Acurite",
  "name": "Acurite",
  "devices": {
    "1R": "Fridge",
    "2F": "Freezer"
  }
}],

Optional - Enable access to Google Sheets to log data

This presumes you already have a google account, and have access to google drive/sheets already

Step 1: Turn on the Drive API a. Use this wizard ( https://console.developers.google.com/start/api?id=sheets.googleapis.com ) to create or select a project in the Google Developers Console and automatically turn on the API. Click Continue, then Go to credentials.

b. On the Add credentials to your project page, click the Cancel button.

c. At the top of the page, select the OAuth consent screen tab. Select an Email address, enter a Product name if not already set, and click the Save button. I used 'Sheets Data Logger'

d. Select the Credentials tab, click the Create credentials button and select OAuth client ID.

e. Select the application type Other, enter the name "Drive API Quickstart", and click the Create button.

f. Click OK to dismiss the resulting dialog.

g. Click the file_download (Download JSON) button to the right of the client ID.

h. Move this file to your .homebridge and rename it logger_client_secret.json.

Step 2: Authorize your computer to access your Drive Account

a. Change to the directory where the plugin is installed i.e.

cd /usr/lib/node_modules/homebridge-mcuiot/node_modules/mcuiot-logger

b. Run the authorization module

node quickstart.js

c. Browse to the provided URL in your web browser.

If you are not already logged into your Google account, you will be prompted to log in. If you are logged into multiple Google accounts, you will be asked to select one account to use for the authorization.

d. Click the Accept button.

e. Copy the code you're given, paste it into the command-line prompt, and press Enter.

Credits

  • merbanan - RTL_433 Sensor decoder
  • simont77 - History Service

homebridge-acurite-temperature's People

Contributors

northernman54 avatar oe5dro avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

homebridge-acurite-temperature's Issues

homebridge always reports timeout for device

Installed per instructions, running on a Raspberry PI3, but don't seem to get any connection between HB and the plugin. Seems to register ok, I can test rtf_433 outside of HB and all works ok. For "devices" I used the "id" of the sensors. Accessories always says 32 degrees.
Am I missing something?

Acurite-606TX

Hi, just in case you'd like to include another Acurite type ...

 /usr/local/bin/rtl_433 -q -F json -C si -G 4 -f 433925000
rtl_433 version 20.02-182-g430785d branch master at 202010091456 inputs file rtl_tcp RTL-SDR
Use -h for usage help and see https://triq.org/ for documentation.
Trying conf file at "rtl_433.conf"...
Trying conf file at "/home/pi/.config/rtl_433/rtl_433.conf"...
Trying conf file at "/usr/local/etc/rtl_433/rtl_433.conf"...
Trying conf file at "/etc/rtl_433/rtl_433.conf"...
quiet option (-q) is default and deprecated. See -v to increase verbosity

	Use -G for testing only. Enable protocols with -R if you really need them.

Registered 161 out of 167 device decoding protocols [ 1-4 6-8 10-17 19-26 29-64 67-167 ]
rtl_433: warning: 106 "Wireless M-Bus, Mode R, 4.8kbps (-f 868330000)" does not support CSV output
rtl_433: warning: 107 "Wireless M-Bus, Mode F, 2.4kbps" does not support CSV output
Detached kernel driver
Found Fitipower FC0012 tuner
Exact sample rate is: 250000.000414 Hz
Sample rate set to 250000 S/s.
Tuner gain set to Auto.
Tuned to 433.925MHz.
Allocating 15 zero-copy buffers




{"time" : "2020-10-31 01:50:31", "model" : "Acurite-606TX", "id" : 120, "battery_ok" : 1, "temperature_C" : 12.500, "mic" : "CHECKSUM"}
{"time" : "2020-10-31 01:51:02", "model" : "Acurite-606TX", "id" : 120, "battery_ok" : 1, "temperature_C" : 12.500, "mic" : "CHECKSUM"}
{"time" : "2020-10-31 01:51:33", "model" : "Acurite-606TX", "id" : 120, "battery_ok" : 1, "temperature_C" : 12.500, "mic" : "CHECKSUM"}
{"time" : "2020-10-31 01:52:04", "model" : "Acurite-606TX", "id" : 120, "battery_ok" : 1, "temperature_C" : 12.500, "mic" : "CHECKSUM"}
{"time" : "2020-10-31 01:52:35", "model" : "Acurite-606TX", "id" : 120, "battery_ok" : 1, "temperature_C" : 12.500, "mic" : "CHECKSUM"}
{"time" : "2020-10-31 01:53:06", "model" : "Acurite-606TX", "id" : 120, "battery_ok" : 1, "temperature_C" : 12.500, "mic" : "CHECKSUM"}

Note that I had to use -G 4

sensor Mebus/433

if you add '-G' parameter in line 53 in sensor.js this and more sensors can be used.
53: var proc = child_process.spawn('/usr/local/bin/rtl_433', ['-q', '-F', 'json', '-C', 'si', '-G']);

Crashing

Aug 3 19:45:10 raj homebridge[16383]: Fri, 03 Aug 2018 23:45:10 GMT acurite Message {"time" : "2018-08-03 19:45:10", "model" : "Efergy e2 CT", "id" : 9729, "current" : inf, "interval" : 18, "battery" : "LOW", "learn" : "YES"}
Aug 3 19:45:10 raj homebridge[16383]: Disconnected Apple TV's
Aug 3 19:45:10 raj homebridge[16383]: undefined:1
Aug 3 19:45:10 raj homebridge[16383]: {"time" : "2018-08-03 19:45:10", "model" : "Efergy e2 CT", "id" : 9729, "current" : inf, "interval" : 18, "battery" : "LOW", "learn" : "YES"}
Aug 3 19:45:10 raj homebridge[16383]: ^
Aug 3 19:45:10 raj homebridge[16383]: SyntaxError: Unexpected token i in JSON at position 84
Aug 3 19:45:10 raj homebridge[16383]: at JSON.parse (:null:null)
Aug 3 19:45:10 raj homebridge[16383]: at AcuritePlugin. (/home/sgracey/node_modules/homebridge-acurite-temperature/sensor.js:60:25)
Aug 3 19:45:10 raj homebridge[16383]: at emitOne (events.js:96:13)
Aug 3 19:45:10 raj homebridge[16383]: at Interface.emit (events.js:191:7)
Aug 3 19:45:10 raj homebridge[16383]: at Interface._onLine (readline.js:241:10)
Aug 3 19:45:10 raj homebridge[16383]: at Interface._normalWrite (readline.js:384:12)
Aug 3 19:45:10 raj homebridge[16383]: at Socket.ondata (readline.js:101:10)

child close code (spawn) 2

Hello!
I successfuly installed the rtl-433, when I run it in the terminal then I see the received Accurite Tower data: id- chanel- temp, humid...
I tried all this things: Please help!
The config
{
"bridge": {
"name": "Homebridge 3A49",
"username": "0E:F8:8A:12:3A:49",
"port": 51832,
"pin": "776-17-904"
},
"accessories": [
{
"accessory": "Acurite",
"name": "Acurite"
}
],
"platforms": [
{
"platform": "Acurite",
"name": "Acurite",
"devices": {
"1R": "Fridge",
"id": "1956",
"A": "Freezer"
}
},
{
"name": "Config",
"port": 8581,
"platform": "config"
},
{
"platform": "rtl_433",
"devices": [
{
"id": "56",
"name": "Acurite-Tower",
"type": "temperature",
"humidity": true
},
{
"id": "4160",
"name": "ketto",
"type": "temperature",
"humidity": true
},
{
"id": "2236",
"name": "2236",
"type": "temperature",
"humidity": true
}
]
}
]
}

The results are 0 degrees and error is child close code (spawn) 2

The log:
[Homebridge UI] Homebridge restart request received
[2021. 02. 16. 22:50:21] [Homebridge UI] UI / Bridge settings have not changed; only restarting Homebridge process
[2021. 02. 16. 22:50:21] [HB Supervisor] Sending SIGTERM to Homebridge
[2021. 02. 16. 22:50:21] Got SIGTERM, shutting down Homebridge...
[2021. 02. 16. 22:50:26] [HB Supervisor] Homebridge Process Ended. Code: 143, Signal: null
[2021. 02. 16. 22:50:31] [HB Supervisor] Restarting Homebridge...
[2021. 02. 16. 22:50:31] [HB Supervisor] Starting Homebridge with extra flags: -I
[2021. 02. 16. 22:50:31] [HB Supervisor] Started Homebridge v1.1.6 with PID: 25631
[2021. 02. 16. 22:50:33] Loaded config.json with 1 accessories and 3 platforms.
[2021. 02. 16. 22:50:33] ---
[2021. 02. 16. 22:50:35] Loaded plugin: [email protected]
[2021. 02. 16. 22:50:35] Registering accessory 'homebridge-acurite.Acurite'
[2021. 02. 16. 22:50:35] ---
[2021. 02. 16. 22:50:39] Loaded plugin: [email protected]
[2021. 02. 16. 22:50:39] Registering platform 'homebridge-acurite-temperature.Acurite'
[2021. 02. 16. 22:50:39] ---
[2021. 02. 16. 22:50:39] Loaded plugin: [email protected]
[2021. 02. 16. 22:50:39] Registering platform 'homebridge-config-ui-x.config'
[2021. 02. 16. 22:50:39] ---
[2021. 02. 16. 22:50:41] Loaded plugin: [email protected]
[2021. 02. 16. 22:50:41] Registering platform 'homebridge-denon-heos.DenonAVR'
[2021. 02. 16. 22:50:41] ---
[2021. 02. 16. 22:50:41] Loaded plugin: [email protected]
[2021. 02. 16. 22:50:41] Registering platform 'homebridge-denon-tv.DenonTv'
[2021. 02. 16. 22:50:41] ---
[2021. 02. 16. 22:50:48] Loaded plugin: [email protected]
[2021. 02. 16. 22:50:48] Registering platform 'homebridge-rtl.rtl_433'
[2021. 02. 16. 22:50:48] ---
[2021. 02. 16. 22:50:48] Loading 3 platforms...
[2021. 02. 16. 22:50:48] [Acurite] Initializing Acurite platform...
[2021. 02. 16. 22:50:48] [Acurite] Adding device 1R Fridge
[2021. 02. 16. 22:50:48] [Acurite] Adding device id 1956
[2021. 02. 16. 22:50:48] [Acurite] Adding device A Freezer
[2021. 02. 16. 22:50:48] Initializing platform accessory 'Fridge'...
[2021. 02. 16. 22:50:48] [Acurite] getServices Fridge
[2021. 02. 16. 22:50:48] Initializing platform accessory '1956'...
[2021. 02. 16. 22:50:48] [Acurite] getServices 1956
[2021. 02. 16. 22:50:48] Initializing platform accessory 'Freezer'...
[2021. 02. 16. 22:50:48] [Acurite] getServices Freezer
[2021. 02. 16. 22:50:48] [Config] Initializing config platform...
[2021. 02. 16. 22:50:49] [Config] Running in Service Mode
[2021. 02. 16. 22:50:49] [rtl_433] Initializing rtl_433 platform...
[2021. 02. 16. 22:50:49] [rtl_433] Adding device 0 Acurite-Tower
[2021. 02. 16. 22:50:49] [rtl_433] Adding device 1 ketto
[2021. 02. 16. 22:50:49] [rtl_433] Adding device 2 2236
[2021. 02. 16. 22:50:49] Initializing platform accessory 'Acurite-Tower'...
[2021. 02. 16. 22:50:49] [rtl_433] getServices Acurite-Tower
[2021. 02. 16. 22:50:49] Initializing platform accessory 'ketto'...
[2021. 02. 16. 22:50:49] [rtl_433] getServices ketto
[2021. 02. 16. 22:50:49] Initializing platform accessory '2236'...
[2021. 02. 16. 22:50:49] [rtl_433] getServices 2236
[2021. 02. 16. 22:50:49] [rtl_433] Spawning rtl_433
[2021. 02. 16. 22:50:49] Loading 1 accessories...
[2021. 02. 16. 22:50:49] [Acurite] Initializing Acurite accessory...
{}
App listening on port 3000!
Setup Payload:
X-HM://0024R56GGH49O
Enter this code with your HomeKit app on your iOS device to pair with Homebridge:

┌────────────┐     
│ 776-17-    
└────────────┘     

[2021. 02. 16. 22:50:50] Homebridge is running on port 51832.
[2021. 02. 16. 22:50:50] [rtl_433] child exit code (spawn) 2
[2021. 02. 16. 22:50:50] [rtl_433] child close code (spawn) 2

how to add 1 decimal place at temperatur?

my sensor is sending me
{"time" : "2019-04-23 16:51:26", "model" : "Ambient Weather F007TH Thermo-Hygrometer", "device" : 234, "channel" : 1, "battery" : "Ok", "temperature_C" : 18.778, "humidity" : 47, "mic" : "CRC"}
temepratur with 3 digital places but homekit shows no decimal places.
is it rounded in the script or is it done by home kit?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.