npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

infinium

v0.7.0

Published

Infinity Touch Thermostat Passive Monitor and Controller

Downloads

22

Readme

Infinium

GitHub Workflow Status David npm npm GitHub

Infinium is a passive monitor and controller for Carrier Infinity Touch thermostats written using NodeJS

Features

  • Monitor all data in and out of an infinity system
  • Set and control the infinity touch control thermostat
  • Wunderground Support (Beta)

Control / View Using

  • REST API
  • WebSockets
  • Class Functions

Config Example

{
    port: 3000,                  // Server Port
    wsEnabled: true,             // WebSockets Enabled
    apiEnabled: true,            // REST API Enabled
    forwardInterval: 900000,     // How often to forward data request to Carrier (in millis)
    weatherRefreshRate: 300000,  // How often for weather module to update
    keepHistory: false,          // Keep Timestamped config and data files
    keepHistoryOnChange: true,   // Only create new history file if the data has changed
    historyExclusions: 'system', // List of files not kept in the history folder. (comma delimited)
    debugMode: false,            // Enable Debugging in the logs

    // Optional. If not in config Infinium defaults to getting weather data from Carrier.
    wunderground {
        apiKey: API_KEY,       // Currently requires a PWS

        // Postal | Zip Code Option
        postalCode: 1001,      // Zip Code
        countryCode: "US",     // If not in the US

        // Geo Location Option
        geoCode: {
            lat: 00.000,       // Latitude
            lon: 000.000       // Longitude
       }
    }
}

Enviroment Variables

INFINIUM_PORT = 3000
INFINIUM_WS_ENABLED = true
INFINIUM_API_ENABLED = true
INFINIUM_KEEP_HISTORY = false
INFINIUM_HISTORY_EXCLUSIONS = 'config,status,system'
INFINIUM_KEEP_HISTORY_ON_CHANGE = true
INFINIUM_FORWARD_INTERVAL = 90000
INFINIUM_WEATHER_REFRESH_RATE = 90000
INFINIUM_DEBUG_MODE = false
INFINIUM_DATA = /data/
INFINIUM_HISTORY_DATA = /data/history/
INFINIUM_TZ = 0  #Sets the timezone if the system does not have it set

REST

Notes

- For all requests, the default zone is 1
- POST data is urlencoded
GET   /api/status              Retreives System Status

GET   /api/config              Retreives System Config

GET   /api/activity/:activity  Retreives Activity Information
      *Optional Parameters*
          zone: 1-8

GET   /api/schedule/           Retreives System Schedule (Week or Specific Day)
      *Optional Parameters*
          zone: 1-8
          day:  monday, tuesday, ..

GET   /api/zone/:zone          Retreives Zone Information (1-8)


POST  /api/activity/:activity  Updates an Activity
      *POST Data Options*
          zone: (int) 1-8
          clsp: (int) Cooling Set Point, value between min and max
          htsp: (int) Heat Set Point, value between min and max temp
          fan:  (string) Fan Level
                  'off' (AKA auto mode) Fan is off unless heating/cooling
                  'low'  Low Fan Speed
                  'med'  Medium Fan Speed
                  'high' High Fan Speed

POST  /api/hold                Puts a hold on a Zone
      *POST Data Options*
          zone:      (int) 1-8
          activity:  (string) Activity for which the system will hold
                       'home' (default), 'away', 'sleep', 'wake', 'manual'
          holdUntil: (string) Time in HH:MM format for which the system will hold the current activity
                       ex: '18:30' (6:30PM)

POST  /api/schedule/:zone      Updates the schedule of a zone
      *Required* JSON Array for 'schedule' value:
          schedule: [
            {
              id: 'Monday', //day of week
              periods: [
                {
                  id: 1,            // period in schedule of day (1-5)
                  activity: 'home', // 'home', 'away', 'sleep', 'wake', 'manual'
                  time: '18:30',    // time you want the activity to be ready by
                  enabled: 'on'     // if you want the period to be enabled ('on' or 'off')
                },
                ...
              ]
            },
            ...
          ],
       *POST Data Options*
          zone: (int) 1-8

WebSocket

/ws/status      Gets Status
/ws/config      Gets Config
/ws/update      Gets all data in the format of { id: 'name of data', data: data }
/ws/:key        Gets specic data where ':key' is the data type.

Data Events from Infinium

Some events may not be available depending on your system
  • config
  • dealer
  • energy
  • energy_star
  • equipment_events
  • history
  • idu_config
  • idu_faults
  • idu_status
  • manifest
  • notifications
  • odu_config
  • odu_faults
  • odu_status
  • profile
  • release_notes
  • root_cause
  • status
  • system
  • utility_events
  • weather

Future Features

  • Web mobile friendly interface
  • Node-RED and Home-Assistant integration
  • Security Policy (Keys for controlling the thermostat or viewing non-status data from REST/WS)

Credits

I would like to thank nebulous who developed https://github.com/nebulous/infinitude for which this project is based on.