Coder Social home page Coder Social logo

xoseperez / espurna Goto Github PK

View Code? Open in Web Editor NEW
3.0K 152.0 634.0 197.4 MB

Home automation firmware for ESP8266-based devices

Home Page: http://tinkerman.cat

License: GNU General Public License v3.0

Shell 0.29% C 15.66% C++ 72.03% Python 2.69% JavaScript 3.75% CSS 0.42% HTML 4.88% CMake 0.29%
esp8266 sonoff home automation espurna firmware

espurna's Introduction

ESPurna Firmware

ESPurna ("spark" in Catalan) is a custom firmware for ESP8285/ESP8266 based smart switches, lights and sensors. It uses the Arduino Core for ESP8266 framework and a number of 3rd party libraries.

version branch license ci build
latest release latest snapshot build downloads
donate gitter matrix twitter


Collaborators

Since November 2018, Max Prokhorov (@mcspr) is also actively working as a collaborator of the project.

Contributors

Without your help this project would not be possible. I (@xoseperez) simply can't spend all the time I wish on ESPurna but luckly I recieve a lot of contributions, bug fixes, enhancement suggestions,... from people all around the world. I would like to thank each and every one of you. The contributors page shows the ones that have done a PR in the past, but I also get contributions in the issues, by email or via the gitter ESPurna channel, those I also want to thank.

Thank you all very much.

Notice

Ladies and gentlemen in the embedded world, use PlatformIO. If I could offer you only one tip for the future, PlatformIO would be it.

Please use the gitter ESPurna channel for support and questions, you have better chances to get fast answers from me or other ESPurna users. Open an issue here only if you feel there is a bug or you want to request an enhancement. Thank you.

Process of building ESPurna from source is documented in the Wiki:
Using PlatformIO IDE for VSCode
Using PlatformIO CLI
Using Arduino IDE

If you want to try out latest changes from dev branch without building the firmware yourself or if you are having problems with the stable release, please visit espurna-nightly-builder releases page.

Features

  • KRACK vulnerability free (when built with Arduino Core >= 2.4.0)
  • Support for multiple ESP8266-based boards (check list)
  • Power saving options
  • Wifi AP Mode or STA mode
    • Supports static IP
    • Up to 5 different networks can be defined
    • Scans for strongest network if more than one defined (also available in web UI)
    • Handles correctly multiple AP with the same SSID
    • Defaults to AP mode (also available after double clicking the main button)
    • Support for WPS and Smart Config (not available in default builds)
  • Network visibility
    • Supports mDNS (service reporting and metadata) both server mode and client mode (.local name resolution)
    • Supports NetBIOS, LLMNR and Netbios (when built with Arduino Core >= 2.4.0) and SSDP (experimental)
  • Switch management
    • Support for push buttons and toggle switches
    • Support for digital and analog buttons
    • Configurable status on boot per switch (always ON, always OFF, same as before or toggle)
    • Support for pulse mode per switch (normally ON or normally OFF) with configurable time
    • Support for relay synchronization (all equal, only one ON, one and only on ON)
    • Support for MQTT groups to sync switches between devices
    • Support for delayed ON/OFF
    • Support for latched relays
  • MQTT enabled
    • SSL/TLS support (not on regular builds, see #64 and #1465)
    • Switch on/off and toggle relays, group topics (sync relays between different devices)
    • Report button event notifications
    • Enable/disable pulse mode
    • Change LED notification mode
    • Remote reset the board
    • Fully configurable in webUI (broker, user, password, QoS, keep alive time, retain flag, client ID)
  • Scheduler to automatically turn on, off or toggle any relay at a given time and day, also change light intensity for dimmers
  • Alexa integration using the FauxmoESP Library
  • Google Assistant integration using IFTTT and Webhooks (Google Home, Allo)
  • Domoticz integration via MQTT
  • Home Assistant integration
    • Support for switches (on/off)
    • Support for lights (color, brightness, on/off state)
    • Supports MQTT auto-discover feature (switches, lights and sensors)
    • Integration via MQTT Discover or copy-pasting configuration code
  • InfluxDB integration via HTTP API
  • Prometheus metrics integration via HTTP API
  • Thingspeak integration via HTTP API (HTTPS available for custom builds)
  • Sonoff RF Bridge support
  • Support for different sensors
    • Environment
      • DHT11 / DHT12 / DHT22 / DHT21 / AM2301 / Itead's SI7021
      • BMP180, BMP280 and BME280 pressure, humidity (BME280) and temperature (BMP280 & BME280) sensor by Bosch
      • BME680 pressure, humidity, temperature and gas sensor by Bosch with support for Bosch's proprietary library BSEC for accurate Indoor Air Quality (IAQ) monitoring (⚠️ learn more)
      • TMP35 and TMP36 analog temperature sensors
      • MAX6675 temperature sensor
      • NTC temperature sensors
      • SI7021 temperature and humidity sensor
      • SHT3X temperature and humidity sensor over I2C (Wemos shield)
      • AM2320 temperature and humidity sensor over I2C
      • Dallas OneWire sensors like the DS18B20
      • MHZ19 CO2 sensor
      • T6613 CO2 sensor
      • MICS2710 CO2 & NO2 sensor
      • MICS5525 CO & CO2 sensor
      • SenseAir S8 CO2 sensor
      • PMSX003/PMS5003T/ST dust sensors
      • SDS011 dust sensor
      • BH1750 luminosity sensor
      • GUVAS12SD UV sensor
      • VEML6075 UV Sensor
      • EZO pH Circuit
      • Geiger counter by RH Electronics
      • HC-SR04, SRF05, SRF06, DYP-ME007, JSN-SR04T & Parallax PING)))™ distance sensors
      • VL53L1X distance sensor
      • MAX6675 K-thermocouple-to-digital converter
      • NTC thermistor
      • LDR light-dependent resistor sensor
    • Power monitoring
      • HLW8012 using the HLW8012 Library (Sonoff POW)
      • CSE7766 and CSE7759B power monitor chips
      • HJL-01 and BL0937 power monitor chips
      • Non-invasive current sensor using internal ADC or ADC712 or ADC121 or ADS1015 / ADS1115
      • V9261F power monitor chip
      • PZEM0004T power monitor board
      • ECH1560 power monitor chip
      • ADE7953 power monitor chip
    • Raw analog and digital sensors
    • Simple pulse counter with event triggering option
    • Support for (almost) any UART based sensor via the UART-to-MQTT module
    • Support for different units (Fahrenheit or Celsius, Watts or Kilowatts, Joules or kWh)
  • Support for LED lights
    • MY92XX-based light bulbs and PWM LED strips (dimmers) up to 5 channels (RGB, cold white and warm white, for instance)
    • Support for CCT lights
    • RGB and HSV color codes supported
    • Manage channels individually
    • Temperature color supported (in mired and kelvin) via MQTT / REST API
    • Flicker-free PWM management
    • Soft color transitions
    • Color synchronization between light using MQTT
    • Option to have separate switches for each channel
  • Support for simple 433MHz RF receivers
  • Support for UART-to-MQTT bidirectional bridge
  • Fast asynchronous HTTP Server and cool Web User Interface
    • Configurable port
    • Basic authentication
    • Web-based configuration
    • Relay switching and sensor data from the web interface
    • Handle color, brightness, and white/warm channels for lights
    • Websockets-based communication between the device and the browser
    • Backup and restore settings option
    • Upgrade firmware from the web interface
    • Works great behind a secured reverse proxy
  • REST API (enable/disable from web interface)
    • GET and PUT relay status (including pulses)
    • Change light color (for supported hardware)
    • GET sensor data (power, current, voltage, temperature and humidity) depending on the available hardware
    • Works great behind a secured reverse proxy
  • RPC API (enable/disable from web interface)
    • Remote reset the board
  • RPN Rules - on-device automation
    • Relays on/off/toggle
    • Lights control
    • Publish / subscribe to MQTT
    • RF receiver integration
  • Over-The-Air (OTA) updates even for 1Mb boards
    • Manually from PlatformIO or Arduino IDE
    • Automatic updates through the NoFUSS Library
    • Update from web interface using pre-built images
  • Command line configuration
    • Change configuration
    • Run special commands
  • Telnet support
    • Enable/disable via the web UI
    • Shows debug info and allows to run terminal commands
  • NTP for time synchronization
    • Supports worldwide time zones
    • Compatible with DST (based on POSIX TZ variable support)
  • Unstable system check
    • Detects unstable system (crashes on boot continuously) and defaults to a stable system
    • Only WiFi AP, OTA and Telnet available if system is flagged as unstable
  • Configurable LED notifications based on WiFi status, relays status or MQTT messages.
  • Button interface
    • Click to toggle relays
    • Double click to enter AP mode (only main button)
    • Long click (>1 second) to reboot device (only main button)
    • Extra long click (>10 seconds) to go back to factory settings (only main button)
    • Specific definitions for touch button devices (ESPurna Switch, Sonoff Touch & T1)
  • Configuration stored in different flash sectors to prevent data loss and corruption
  • Garland Implementing garland using WS2812 leds
    • 12 animation modes (include start animation)
    • Web control for:
      • ON/OFF, brightness, speed
    • MQTT control:
      • ON/OFF, brightness, speed
      • Animation queue
      • Animation sequence

Notices


2018-04-08
Please use gitter for support and questions, you have better chances to get fast answers by me or other ESPurna users. Open an issue here only if you feel there is a bug or you want to request an enhancement. Thank you.


2018-03-09
Default branch in GitHub is now the development branch "dev".
The stable branch (the one used to create the binary releases) is "master".


2018-01-24
This repository has been migrated from Bitbucket to GitHub. There were a number of reason to migrate the repository to GitHub. I like Bitbucket and I'm still using it for a lot of projects, but ESPurna has grown and its community as well. Some users have complain about Bitbucket not being enough community-focused. This change is mainly aimed to use a platform with greater acceptance on the open-source community and tools better suited to them (to you), like the possibility to contribute to the documentation in an easy way.

What happened with all the info in Bitbucket? Well, most of it has been ported to GitHub, albeit with some quirks:

  • Code has, of course been migrated completely
  • Issues are all on GitHub already but all issues and comments show up as reported by me. The original reporter is referenced inside the body of the issue (or comment) with a link to his/her profile at Bitbucket and a link to his/her profile at GitHub if it happens to be the same username. I suggest all reporters to subscribe to the issues they originally filed (search for your BitBucket username to list them).
  • Pull requests historic has not been migrated. At the moment of the migration all pull-requests have been either merged or declined. Of course, those PR merged are in the code base, but the historic and comments in the PR pages will be lost.
  • Documentation it's on it way, first step will be to migrate existing wiki, maybe with a new TOC structure
  • Watchers, Forks, I'm afraid they are all gone. Visit the new repo home and click on the "Watch" button on the top right. And as you do it click also on the "Star" button too :)

I apologize for any inconvenience this migration may have caused. I have decided to do it the hard way.


2018-01-11
As of current version (1.12.0) ESPurna is tested using Arduino Core 2.3.0 and it's meant to be built against that version.


2017-08-26
Since version 1.9.0 the default MQTT topics for commands have changed. They all now end with "/set". This means you will have to change your controller software (Node-RED or alike) to send messages to -for instance- "/home/living/light/relay/0/set". The device will publish its state in "/home/living/light/relay/0" like before.


2017-07-24
Default flash layout changed in 1.8.3, as an unpredicted consequence devices will not be able to persist/retrieve configuration if flashed with 1.8.3 via OTA from PlatformIO. Please check issue #187.


Contribute

There are several ways to contribute to ESPurna development. You can contribute to the repository by doing:

  • Pull requests (fixes, enhancements, new features... are very welcome)
  • Documentation (I reckon I'm bad at it)
  • Testing (filing issues or help resolving them, they take a lot of time and sometimes I don't have the required hardware to test them all)

And of course you can always buy me a beer, coffee, tea,... via the donation button below.

Donate

Documentation

For more information please refer to the ESPurna Wiki.

Supported hardware

Here is the list of supported hardware. For more information please refer to the ESPurna Wiki Hardware page, search for wiki pages starting with Hardware-..., or search throught our build configuration files with hardware presets.

Power monitoring devices

BlitzWolf BW-SHP6 BlitzWolf BW-SHP2 BlitzWolf BW-SHP5
Blitzwolf BW-SHP6 Blitzwolf BW-SHP2
(also by Coosa, Gosund, HomeCube, Teckin)
Blitzwolf BW-SHP5
Power meters based on V9261F Itead Sonoff POW Itead Sonoff POW
Power meters based on V9261F Itead Sonoff POW Itead Sonoff POW R2
Itead Sonoff S31 Smartlife Mini Smart Socket Teckin SP20
Itead Sonoff S31 Smartlife (NETVIP) Mini Smart Socket Teckin SP20
Digoo NX SP202 Vanzavanzu Smart WiFi Plug Mini Hykker Smart Home Power Plug
Digoo NX SP202 Vanzavanzu Smart WiFi Plug Mini Hykker Smart Home Power Plug

Embedded switches

Itead Sonoff Basic Itead Sonoff Dual/Dual R2 Itead Sonoff TH10/TH16
Itead Sonoff Basic (including R2 and R3) Itead Sonoff Dual/Dual R2 Itead Sonoff TH10/TH16
Electrodragon WiFi IOT OpenEnergyMonitor WiFi MQTT Relay / Thermostat
Electrodragon WiFi IOT OpenEnergyMonitor WiFi MQTT Relay / Thermostat
Itead Sonoff 4CH Itead Sonoff 4CH Pro
Itead Sonoff 4CH Itead Sonoff 4CH Pro
Allterco Shelly 1 / 1PM Allterco Shelly 2 / 2.5 Jan Goedeke Wifi Relay (NO/NC)
Alterco Shelly 1 / 1PM Alterco Shelly 2 / 2.5 Jan Goedeke Wifi Relay (NO/NC)
EXS Wifi Relay v3.1 EXS Wifi Relay v5.0 Jorge García Wifi + Relays Board Kit
EXS Wifi Relay v3.1 EXS Wifi Relay v5.0 Jorge García Wifi + Relays Board Kit
Allnet ESP8266-UP-Relay Bruno Horta's OnOfre Luani HVIO
Allnet ESP8266-UP-Relay Bruno Horta's OnOfre Luani HVIO

Wall Sockets

Itead S20 Itead S26 Neo Coolcam NAS WR01W
Itead S20 Itead S26 Neo Coolcam NAS WR01W
Maxcio W-US002S HEYGO HY02 YiDian XS-SSA05
Maxcio W-US002S HEYGO HY02 YiDian XS-SSA05
WiOn 50055 LINGAN SWA1 HomeCube 16A
WiOn 50055 LINGAN SWA1 HomeCube 16A
WorkChoice EcoPlug Bestek MRJ1011 Tonbux XS-SSA01
WorkChoice EcoPlug Bestek MRJ1011 Tonbux XS-SSA01
Schuko Wifi Plug Schuko Wifi Plug V2 KMC 70011
Schuko Wifi Plug Schuko Wifi Plug V2 KMC 70011
Xenon SM-PW702U Orvibo B25 Oukitel P1
Xenon SM-PW702U Orvibo B25 Oukitel P1
Tonbux XS-SSA06 Litesun LA-WF3 Maxcio W DE-004
Tonbux XS-SSA06 Litesun LA-WF3 Maxcio W DE-004
Hama WiFi Steckdose GBLife RGBW Socket
Hama WiFi Steckdose GBLife RGBW Socket

Wall switches

Itead Sonoff Touch Itead Sonoff T1 YJZK switch
Itead Sonoff Touch Itead Sonoff T1 YJZK 1/2/3-gangs switch
Gosund WS1 / KS-602S
Gosund WS1 / KS-602S

Power strips

Tonbux PowerStrip02 ForNorm ZLD-34EU Zhilde ZLD-EU44-W
Tonbux PowerStrip02 Fornorm Power Strip Zhilde ZLD-44EU-W/ZLD-64EU-W

Smart lights

Itead Slampher Arilux E27 Itead Sonoff B1
Itead Slampher Arilux E27 Itead Sonoff B1
AI-Thinker Wifi Light / Noduino OpenLight Authometion LYT8266 AG-L4
AI-Thinker Wifi Light / Noduino OpenLight Authometion LYT8266 AG-L4
Lohas 9W Xiaomi Smart Desk Lamp iWoole LED Table Lamp
Lohas 9W Xiaomi Smart Desk Lamp iWoole LED Table Lamp
Itead Sonoff LED Itead BN-SZ01 Lombox LUX Nova 2
Itead Sonoff LED Itead BN-SZ01 Lombex LUX Nova 2 (white and color)
Arilux AL-LC01 (RGB) Arilux AL-LC02 (RGBW) Arilux AL-LC06 (RGBWWCW)
Arilux AL-LC01 (RGB) Arilux AL-LC02 (RGBW) Arilux AL-LC06 (RGBWWCW)
Arilux AL-LC11 (RGBWWW) & RF MagicHome LED Controller (1.0 and 2.x) Huacanxing H801/802
Arilux AL-LC11 (RGBWWW) & RF MagicHome LED Controller (1.0/2.x, also ZJ WFMN A/B11) Huacanxing H801/802
Muvit I/O MIOBULB001 LAMPI Smart Light
Muvit I/O MIOBULB001 Lampi Battery Powered Smart Light

Radio links / gateways

Tinkerman RFM69GW Itead Sonoff RF Bridge Itead Sonoff RF
Tinkerman RFM69GW Itead Sonoff RF Bridge Itead Sonoff RF

Other devices

Tonbux Mosquito Killer Itead Sonoff IFAN02
Tonbux Mosquito Killer Itead Sonoff IFAN02

Custom & Development boards

Tinkerman Espurna H NodeMCU
Tinkerman ESPurna H NodeMCU Lolin V3
Itead Sonoff SV Itead 1CH Inching Itead Motor Clockwise/Anticlockwise
Itead Sonoff SV Itead 1CH Inching Itead Motor Clockwise/Anticlockwise
ManCaveMade ESP-Live Wemos D1 Mini Relay Shield Gizwits Witty Cloud
ManCaveMade ESP-Live Wemos D1 Mini Relay Shield Gizwits Witty Cloud
IKE ESPike Pilotak ESP DIN Arniex Swifitch
IKE ESPike Pilotak ESP DIN Arniex Swifitch
Heltec Touch Relay Generic Relay v4.0 Generic RGBLed v1.0
Heltec Touch Relay Generic Relay v4.0 Generic RGBLed v1.0
Generic DHT11 v1.0 Generic DS18B20 v1.0 InterMitTech QuinLED 2.6
Generic DHT11 v1.0 Generic DS18B20 v1.0 InterMitTech QuinLED 2.6
Phyx ESP12 RGBW RH Electronics Geiger Counter Green ESP Relay
Phyx ESP12 RGBW RH Electronics Geiger Counter Green ESP Relay
Foxel Lightfox Dual
Foxel Lightfox Dual

License

Copyright (C) 2016-2019 by Xose Pérez (@xoseperez)

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

espurna's People

Contributors

abmantis avatar albertweterings avatar alextircovnicu avatar cabalist avatar colinshorts avatar darshkpatel avatar denisfrench avatar elderjoy avatar foxel avatar foxman69 avatar gn0st1c avatar herm avatar krosk93 avatar lobradov avatar m-kozlowski avatar manuelw77 avatar mcspr avatar niek avatar pilotak avatar rhx avatar ruimarinho avatar skaronator avatar soif avatar tardymo avatar tonia avatar trickx avatar twomugs avatar uberflyx avatar wysiwyng avatar xoseperez avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

espurna's Issues

PlatformIO: Failed to rebuild C/C++ Project Index (for Autocomplete, Linter).

Originally reported by: Denis French (Bitbucket: denisfrench, GitHub: denisfrench)


I have been unable to compile, clean or rebuild the project index on the current master branch due to this error in PlatformIO on Windows 10 x64.

I have tried a complete reinstall of Python 2.7, Clang and Atom/PlatformIO (including Python in windows path), with no improvement.

I would still not be surprised if it were something at my end; any advise appreciated.

The following is the full output of the error:

#!arduino


Error: [01/07/17 20:32:35] Processing d1-debug (framework: arduino, lib_deps: DHT sensor library, Adafruit Unified Sensor, Time, ArduinoJson, ESPAsyncTCP, ESPAsyncWebServer, https://github.com/marvinroger/async-mqtt-client, Embedis, NtpClientLib, OneWire, DallasTemperature, JustWifi, HLW8012, https://bitbucket.org/xoseperez/fauxmoesp.git, https://bitbucket.org/xoseperez/nofuss.git, https://bitbucket.org/xoseperez/emonliteesp.git, https://bitbucket.org/xoseperez/debounceevent.git, https://github.com/xoseperez/RemoteSwitch-arduino-library.git, build_flags: -g -DD1_RELAYSHIELD -DDEBUG_PORT=Serial -DDEBUG_FAUXMO=Serial -DNOWSAUTH, lib_ignore: , platform: espressif8266, board: d1_mini, extra_script: pio_hooks.py)




Error: Traceback (most recent call last):

  File "c:\users\denis\.atom\packages\platformio-ide\penv\lib\site-packages\platformio\__main__.py", line 106, in main

    cli(None, None, None)

  File "c:\users\denis\.atom\packages\platformio-ide\penv\lib\site-packages\click\core.py", line 700, in __call__

    return self.main(*args, **kwargs)

  File "c:\users\denis\.atom\packages\platformio-ide\penv\lib\site-packages\click\core.py", line 680, in main

    rv = self.invoke(ctx)

  File "c:\users\denis\.atom\packages\platformio-ide\penv\lib\site-packages\click\core.py", line 1027, in invoke

    return _process_result(sub_ctx.command.invoke(sub_ctx))

  File "c:\users\denis\.atom\packages\platformio-ide\penv\lib\site-packages\click\core.py", line 873, in invoke

    return ctx.invoke(self.callback, **ctx.params)

  File "c:\users\denis\.atom\packages\platformio-ide\penv\lib\site-packages\click\core.py", line 508, in invoke

    return callback(*args, **kwargs)

  File "c:\users\denis\.atom\packages\platformio-ide\penv\lib\site-packages\click\decorators.py", line 16, in new_func

    return f(get_current_context(), *args, **kwargs)

  File "c:\users\denis\.atom\packages\platformio-ide\penv\lib\site-packages\platformio\commands\run.py", line 109, in cli

    results.append((envname, ep.process()))

  File "c:\users\denis\.atom\packages\platformio-ide\penv\lib\site-packages\platformio\commands\run.py", line 172, in process

    result = self._run()

  File "c:\users\denis\.atom\packages\platformio-ide\penv\lib\site-packages\platformio\commands\run.py", line 255, in _run

    ], self.verbose)

  File "c:\users\denis\.atom\packages\platformio-ide\penv\lib\site-packages\platformio\commands\run.py", line 276, in _autoinstall_libdeps

    ctx.invoke(cmd_lib_install, libraries=[lib], silent=not verbose)

  File "c:\users\denis\.atom\packages\platformio-ide\penv\lib\site-packages\click\core.py", line 508, in invoke

    return callback(*args, **kwargs)

  File "c:\users\denis\.atom\packages\platformio-ide\penv\lib\site-packages\click\decorators.py", line 26, in new_func

    return f(get_current_context().obj, *args, **kwargs)

  File "c:\users\denis\.atom\packages\platformio-ide\penv\lib\site-packages\platformio\commands\lib.py", line 91, in lib_install

    lm.install(library, silent=silent, interactive=interactive)

  File "c:\users\denis\.atom\packages\platformio-ide\penv\lib\site-packages\platformio\managers\lib.py", line 229, in install

    interactive=interactive)

  File "c:\users\denis\.atom\packages\platformio-ide\penv\lib\site-packages\platformio\managers\lib.py", line 188, in _get_pkg_id_by_name

    package_dir = self.get_package_dir(name, requirements)

  File "c:\users\denis\.atom\packages\platformio-ide\penv\lib\site-packages\platformio\managers\package.py", line 429, in get_package_dir

    package = self.get_package(name, requirements, url)

  File "c:\users\denis\.atom\packages\platformio-ide\penv\lib\site-packages\platformio\managers\package.py", line 399, in get_package

    for manifest in self.get_installed():

  File "c:\users\denis\.atom\packages\platformio-ide\penv\lib\site-packages\platformio\managers\package.py", line 381, in get_installed

    manifest = self.load_manifest(pkg_dir)

  File "c:\users\denis\.atom\packages\platformio-ide\penv\lib\site-packages\platformio\managers\package.py", line 143, in load_manifest

    manifest = util.load_json(path)

  File "c:\users\denis\.atom\packages\platformio-ide\penv\lib\site-packages\platformio\util.py", line 161, in load_json

    return json.load(f)

  File "C:\Python27\Lib\json\__init__.py", line 291, in load

    **kw)

  File "C:\Python27\Lib\json\__init__.py", line 339, in loads

    return _default_decoder.decode(s)

  File "C:\Python27\Lib\json\decoder.py", line 364, in decode

    obj, end = self.raw_decode(s, idx=_w(s, 0).end())

  File "C:\Python27\Lib\json\decoder.py", line 382, in raw_decode

    raise ValueError("No JSON object could be decoded")

ValueError: No JSON object could be decoded

Expanding scope of espurna

Originally reported by: David Myers (Bitbucket: brahmafear, GitHub: brahmafear)


Two thoughts here for consideration. Both deal with expanding Espurna beyond the domain of wifi controlled outlets to a more flexible IoT firmware for esp8266.

Add a subsection that would publish status of a gpio pin to MQTT. This could be useful for either reporting the status of door / window sensors or alerting activity from an attached PIR motion sensor.

In the same way that fauxmo, dht, ds18b20, nofuss, ... sections are able to be disabled when not needed, the same could be setup for the relay section. As stated above, this would be a departure from the original intention of the firmware, but could make espurna more flexible - and being able to disable sections hopefully would allow it to fit on 512k versions of esp8266-01 modules.

Thanks again for the great work on this software. It continues to be very useful for me. Just adding some thoughts here to see if anyone else is interested as well.

MQTT does not reconnect after WIFI reconnecting

Steps to reproduce:

  • Connect to a network and a broker
  • Issue a reconnect command (either through the web interface or the terminal)
  • The WIFI reconnects successfully but the MQTT connection keeps dropping
  • Resetting the board connects again both WIFI and MQTT without problem

Possibly, the same happens after a wifi connection drop.

Might be related to marvinroger/async-mqtt-client#30

Sonoff TH: Infallibility

Originally reported by: Pavel Eremin (Bitbucket: paveleremin, GitHub: paveleremin)


Hello everyone,

I've got my first Sonoff TH and I decide to test own firmware before change it to espurna.

  1. I setup automatic mode with minTemp and maxTemp - all worked fine

  2. Then I turned off the router, and it's continue to work!

The question is: will Sonoff TH continue work without wifi?

If not, I think it's not safe use it with gas boiler, because in this case we have two points of failure: router and mqtt server. @xoseperez what do you thing about it?

ESPAsyncUCP

Originally reported by: Rüdiger Rowold (Bitbucket: rudynz, GitHub: rudynz)


I line 13 of the new platformio.ini file it includes the library "ESPAsyncUCP".
This should be "ESPAsyncUDP" - I guess
Thank you for your work

Compile error with NoFuss module present

Originally reported by: SteveJ (Bitbucket: stevej1970, GitHub: Unknown)


Hi Xose,

When trying to compile espurna, the following error occurs on both Linux and Windows 10 machines when NoFussClient.o is compiled -

Capture.JPG

If I remove the folder from .piolibdeps and the lib_deps definition in platformio.ini the compile runs through without error.

Is there something I'm missing? I've tried with both the stable & _stage platforms.

WPA key

Originally reported by: David Myers (Bitbucket: brahmafear, GitHub: brahmafear)


Small issue that probably doesn't require a code change. Changing the default password from 'fibonacci' which also sets the WPA key when in AP mode, the new pwd needs to be at least 8 characters. The code doesn't enforce this, but an 8 char pwd is mandated by WPA. Not sure if you want to just include a warning, force an 8 character pwd, or have the code pad out the pwd to 8 chars.

Support son off 2 switches

Originally reported by: Sylvain Blot (Bitbucket: sylvainblot, GitHub: sylvainblot)


Hello!

Thank you for this firmware it works really nice my s20 socket.
On the other hand I've this sonoff card : sonoff.jpg

I tried to flash it without success (same process as s20, press button 1 when power up and sudo platformio run --target upload -e sonoff-debug --upload-port /dev/ttyUSB0)

Unfortunately I always get :

Linking .pioenvs/sonoff-debug/firmware.elf
Checking program size .pioenvs/sonoff-debug/firmware.elf
text	   data	    bss	    dec	    hex	filename
320792	   8576	  34016	 363384	  58b78	.pioenvs/sonoff-debug/firmware.elf
Looking for upload port...
Use manually specified: /dev/ttyUSB0
Uploading .pioenvs/sonoff-debug/firmware.bin
warning: espcomm_sync failed
error: espcomm_open failed
error: espcomm_upload_mem failed
*** [upload] Error 255

Do you have any idea why I can't flash it? Is this board supported?

Regards

Control LED blinking using MQTT

Originally reported by: Eugene Schava (Bitbucket: Eschava, GitHub: Eschava)


It would be good to have option to disable built in blinking algo and use parameters received from mqtt
E.g. string 2000,500 received from Mqtt topic /led/0 means that led should blink 500 ms with 2000 ms interval
Also there should be an ability to specify always on and always off programs

OTA not working

Originally reported by: Tim K (Bitbucket: clueo8, GitHub: clueo8)


I just flashed to 1.5.0 for the first time on a regular sonoff and sonoff dual and then pulled down 1.5.1 from this morning, wanting to try an OTA to see if that works. It is failing on both:

14:53:47 [DEBUG]: Options: {'esp_ip': '192.168.1.32', 'host_port': 42486, 'image': '.pioenvs/sonoff-dual-debug-ota/firmware.bin', 'host_ip': '0.0.0.0', 'auth': '********', 'esp_port': 8266, 'spiffs': False, 'debug': True, 'progress': True}
14:53:47 [INFO]: Starting on 0.0.0.0:42486
14:53:47 [INFO]: Upload size: 368624
14:53:47 [INFO]: Sending invitation to: 192.168.1.32
Authenticating...OK
14:53:47 [INFO]: Waiting for device...
14:53:57 [ERROR]: No response from device
*** [upload] Error 1

I want to add that I do see the OTA popup if I have the browser window opened up while attempting the update via pio. Also, I'm not using a static IP, but just the IP my router assigned.

Relay pulse support

Originally reported by: Nuno Sousa (Bitbucket: nunofgs, GitHub: nunofgs)


Hello, I am planning on using a relay to open/close a garage door.

I have a relay connected to an esp8266 but I need to toggle the relay for about 500ms (should be configurable ideally). I believe ESPEasy supports this and refers to it as a "pulse".

Any chance this could be added to espurna?

SECURITY page check does not allow passwords with special characters

Originally reported by: Jean-Luc A. (Bitbucket: cnxsoft2016, GitHub: Unknown)


I've updated ESPurna firmware to version 1.4.4 in a Sonoff POW device, and at first login the SECURITY web page shows asking to input a password.

The check function requires at least 8 characters, a uppercase character, and a number. I had done that with with a special character *, and it failed. Removing * fixed the issue.

Suggestion to implement a topic /error

Originally reported by: RAJEEV TANDON (Bitbucket: rajtan, GitHub: rajtan)


Hi,

I propose to use / implement an MQTT topic as "/error"

This may be used to publish relevant error and/or debugging messages to the broker, which might be used by developers or implementors to debug the internal code or for other purposes.

I have successfully used this to identify an error condition (if it happens) during the regular use. This may or may not be kept web configurable. I have presently defined it as MQTT_ERROR_TOPIC in general.h and using it in code (relay mode, for now)

Compile Error ntp

Originally reported by: Eduardo López (Porfinfunciona) (Bitbucket: porfinfunciona, GitHub: porfinfunciona)


Hello,

when i compling in arduino crash whith this error.

ntp:18: error: variable or field 'ntpConnect' declared void

void ntpConnect(WiFiEventStationModeGotIP ipInfo) {

             ^

ntp:18: error: 'WiFiEventStationModeGotIP' was not declared in this scope

ntp:18: error: variable or field 'ntpConnect' declared void

void ntpConnect(WiFiEventStationModeGotIP ipInfo) {

             ^

ntp:18: error: 'WiFiEventStationModeGotIP' was not declared in this scope

C:\Users\HP\Desktop\xoseperez-espurna-9ce457fa8623\code\espurna\ntp.ino: In function 'void ntpSetup()':

ntp:37: error: 'WiFiEventHandler' does not name a type

 static WiFiEventHandler e;

        ^

ntp:38: error: 'e' was not declared in this scope

 e = WiFi.onStationModeGotIP(ntpConnect);

 ^

ntp:38: error: 'class ESP8266WiFiClass' has no member named 'onStationModeGotIP'

 e = WiFi.onStationModeGotIP(ntpConnect);

          ^

ntp:38: error: 'ntpConnect' was not declared in this scope

 e = WiFi.onStationModeGotIP(ntpConnect);

                             ^

exit status 1
variable or field 'ntpConnect' declared void

Can help me? I use arduino 1.6.11

Firmware update from web interface

As an alternative to OTA for remote firmware update it could be interesting to have the option to upload the firmware and SPIFFS image from the web interface.

It's a valid option to flash distributed images in small quantities of boards.

Compile error with AsyncStaticWebHandler sonoff-debug

Originally reported by: an_indian_man (Bitbucket: an_indian_man, GitHub: Unknown)


pio run -e sonoff-debug
Win10 x64
platformIO
ESP-stage

.piolibdeps\ESPAsyncWebServer_ID306\src\WebHandlers.cpp: In member function 'AsyncStaticWebHandler& AsyncStaticWebHandler::setLastModified(tm*)':
.piolibdeps\ESPAsyncWebServer_ID306\src\WebHandlers.cpp:67:64: error: 'strftime' was not declared in this scope
strftime (result,30,"%a, %d %b %Y %H:%M:%S %Z", last_modified);
^
.piolibdeps\ESPAsyncWebServer_ID306\src\WebHandlers.cpp: In member function 'AsyncStaticWebHandler& AsyncStaticWebHandler::setLastModified(time_t)':
.piolibdeps\ESPAsyncWebServer_ID306\src\WebHandlers.cpp:72:60: error: 'gmtime' was not declared in this scope
return setLastModified((struct tm *)gmtime(&last_modified));
^
.piolibdeps\ESPAsyncWebServer_ID306\src\WebHandlers.cpp: In member function 'AsyncStaticWebHandler& AsyncStaticWebHandler::setLastModified()':
.piolibdeps\ESPAsyncWebServer_ID306\src\WebHandlers.cpp:77:25: error: 'time' was not declared in this scope
if(time(&last_modified) == 0) //time is not yet set

MQTT set vs status topics

Originally reported by: David Myers (Bitbucket: brahmafear, GitHub: brahmafear)


From 1.0.3 to 1.2.0 seems that the ability to have separate 'set' and 'status' topics for MQTT was lost in the implementation of multiple relay control. Any interest in adding this back in for those that want it?

Reason - allows verification that espurna device received and acted upon the MQTT command.

Suggested implentation: #define statements for MQTT_RELAY_SET "/relay/%d/set" and MQTT_RELAY_STATUS "/relay/%d/status". For those that don't want this distinction, config of defines can be modified to point to same topic.

Trickiness: I think making the changes above will affect the way that incoming MQTT messages are processed. Right now, it looks like the code just looks at the last character of the topic to determine the relay number. That won't work if the topic ends in '/set'.

MQTT Relay Issue

Originally reported by: RAJEEV TANDON (Bitbucket: rajtan, GitHub: rajtan)


There seems to be an issue in relay module.

When there is an incoming request (mqtt message for setting up a relay) - the code which is used to get the relayID seems to be erroneous (at least in my case). The code used to fetch the index of character having relayId is IMHO wrong. I have used the following code fragment to get the correct relayID.

#!arduino

relayID = topic[strlen(topic)-strlen(MQTT_USE_SETTER)-1] - '0'

This would manifest only when an MQTT message for setting up a relay status is received wherein an incorrect relay being triggered (usually relay 0 due to the following code) when some other one was intending the other relay.

I could also not understand the code to reset the relay to 0 if extracted Id was higher?

Anyone having this problem? Though I have fixed both of above for now.

Fauxmoesp preprocessor flag naming conflict

Detected unknown package 'espressif8266_stage'

Originally reported by: Curtis Joslin (Bitbucket: curtis_joslin, GitHub: Unknown)


PS C:\Users\citru\Documents\Arduino\Sketches\xoseperez-espurna-b102ec52e417\code> pio run -e node-debug

[11/28/16 14:16:13] Processing node-debug (build_flags: -DNODEMCUV2 -DDEBUG_PORT=Serial -DENABLE_FAUXMO=1, lib_deps: 19, 31, 44, 64, 305, 306, 346, 359, 408, 727, https://bitbucket.org/xoseperez
/justwifi.git, https://bitbucket.org/xoseperez/nofuss.git, https://bitbucket.org/xoseperez/hlw8012.git, https://bitbucket.org/xoseperez/emonliteesp.git, https://bitbucket.org/xoseperez/fauxmoesp
.git, https://github.com/jccprj/RemoteSwitch-arduino-library, platform: espressif8266_stage, board: nodemcuv2, framework: arduino, extra_script: pio_hooks.py)

PlatformManager: Installing espressif8266_stage
Error: Detected unknown package 'espressif8266_stage'

Tried to run your 'pio' command and get the above error.

Sonoff Pow Domoticz

Originally reported by: Zerosub (Bitbucket: Zerosub, GitHub: Zerosub)


The integration in Domoticz works very well. Unfortunately, the sonoff pow is not reporting the power measurements to domoticz. It sends well plaintext info to mqtt, but if i assign an IDX to the Power in the domoticz settings, all that is sent looks like this:
{ "idx": 7, "nvalue": 2 "svalue": ""}

Sonoff Switch: Web server not available

Originally reported by: Pavel Eremin (Bitbucket: paveleremin, GitHub: paveleremin)


Steps to reproduce:

  1. download espurna

  2. change "platform" from "espressif8266" to "espressif8266_stage" in platformio.ini

  3. upload and uploadfs with "pio run"

  4. connect to wifi network SONOFF_XXXXXX make setup

  5. try to enter to the web interface in the router's wifi, but it's fail, seems something wrong with web server:

Resource interpreted as Document but transferred with MIME type application/octet-stream: "http://192.168.0.104/".

also it propose to download some "download" file in browser

Lite version for 512KB devices

ESPurna firmware fits into 512KB but without OTA and with a reduced version of the web interface or no web interface at all...

Add domoticz integration to sensors

Right now the firmware supports DHTXX, DS18B20, CT and HLW8012 sensors. It should be possible to configure the IDX for each magnitude those sensors expose and export their values periodically to Domoticz.

Support for toggle switch

Currently ESPurna only supports push buttons. It will be nice to support toggle switches. The expected behaviour would be the switch changing its state should toggle the relay. Also button events should be reported to MQTT with a fixed payload ("1" for instance).
TBD what to do with long click and double click events...

Preference setting for automatic relay activation

Originally reported by: Mr_Mep (Bitbucket: Mr_Mep, GitHub: Unknown)


If I'm not wrong, at the moment pressing the button on the device activates the relay.
It would be useful to control this behaviour through the web interface.

For example, I connected a sonoff to my door bell, but I don't want that every time someone pushes the button the bell rings. I want to be able to receive an MQTT message that tells me that the button was pressed and then take action consequently (i.e. acoustic activation vs. silent alarm such as light blinking etc.).

I managed to do that by adding a trap in button.ini, but I don't know well enough the project to add a GUI element to control that.

Thanks for the excellent work!

Gianluca

platformio.ini line 22

Originally reported by: an_indian_man (Bitbucket: an_indian_man, GitHub: Unknown)


lib_ignore = FauxmoESP, ESPAsyncUDP

remove ESPAsyncUDP, causes compile errors.

Sonoff-pow-debug build failure (HW8012.h missing)

Originally reported by: Jean-Luc A. (Bitbucket: cnxsoft2016, GitHub: Unknown)


Building with "run -e sonoff-pow-debug" end with:

#!arduino

Compiling .pioenvs/sonoff-pow-debug/FrameworkArduino/Stream.o
/media/hdd/edev/esp8266/sonoff/espurna/code/src/pow.ino:13:21: fatal error: HLW8012.h: No such file or directory
#include <HLW8012.h>
^
compilation terminated.

It looks like hlw8012 library is not installed automatically even though https://bitbucket.org/xoseperez/hlw8012.git is listed in platformio.ini

Meter instead of Switch

Originally reported by: chenchiang (Bitbucket: chenchiang, GitHub: chenchiang)


Hi Xose,

I was thinking more like to use Sonoff Pow as a meter more than just a Switch.

It would be a good idea if the device is also sending the other meter readings like time, current, voltage, energy out.

Cheers

Chen

Sonoff Pow crash with high-wattage appliances

Originally reported by: Dave Arter (Bitbucket: davearter, GitHub: Unknown)


Thanks for the espurna firmware project, it's awesome. After reading your blog post about the Sonoff Pow I thought I'd give it a try on some Pows I've got here.

I understand the Pow support is very experimental but thought I'd let you know of a crash I'm seeing in case it's helpful. When running a device such as a toaster or kettle via the Pow the firmware crashes soon after switching the appliance on. The Pow restarts and subsequent power output readings are all 0, despite the appliance being powered on.

I managed to capture the serial output when the crash occurs, which I've attached. I've removed the device id and tidied up the whitespace/linebreaks but other than that it's as it appears.

I'll keep experimenting to see if I can find the threshold at which this bug is triggered.

Sonoff Dual Button

Originally reported by: Matheus Telles (Bitbucket: matheustelles, GitHub: matheustelles)


How can I enter in AP mode or reset the Sonoff Dual? Because I trying to double/long press the 0,1 and 2 buttons and no success.

Ecoplug Power Sensing

Originally reported by: Jonathan Hatter (Bitbucket: jhatter, GitHub: jhatter)


Some versions of the ecoplug have power sensing included. I was hoping, if it's possible, to include this feature in the firmware.

Allow to define relay logic for each relay

The code currently assumes relays are driven by "direct" logic: HIGH activates the relay (closes it) and LOW deactivates it (opens it). But, even thou the boards it currently support follow that rule, there's no reason why it should always be like that. So ti be more generic it should be possible to define the relay logic the same way we are defining the LED logic.

API entry points for sensor data

Right now the firmware supports DHTXX, DS18B20, CT and HLW8012 sensors. It should be possible to query their latest (cached) values through the REST API in place.

Cant access more then password change page

Originally reported by: Kruno M (Bitbucket: Kruu51, GitHub: Unknown)


After flashing firmware i flashed spiffs.bin with : pio run -t uploadfs -e sonoff-debug
because I have sonoff 10A.

I connect trough wifi on sonoff, type admin/defaulpassword, I get to page to change default password (page is all white with just letters on it), put the password, click Upload and after that I get error page ( page not available)

What am I duing wrong?

Thanks

Static IP

Originally reported by: Martin Stahl (Bitbucket: xboxpro1, GitHub: xboxpro1)


Hello, first thank you for your great work, it is fantastic.

I have a question.

When i use Static IP and the Device is power up or resetet, it useses DHCP,
first i have to log in to the webserver, go to the wifi tab and hit the RECONNECT button.
Then the Device is reconnecting and use the Static IP.

Maybe it is possible to check the IP when connected, and compare it with the given Static IP,
when the IP is wrong the Device do an Auto-Reconnect??

Thanks..

Arduino IDE compatibility

Compiling ESPurna from Arduino IDE requires some previous steps that some users might find hard to achieve. The goal is to ease these steps.

  • Naming folders and files for Arduino IDE compatibility
  • Define and implement dependencies (libraries) strategy
  • Move data folder to where the IDE will find it
  • Add documentation with step-by-step process

Sonoff Can't connect to wifi

Originally reported by: Fernando (Bitbucket: multimake, GitHub: multimake)


Hi Xose,
I am testing your great firmware with different hardwares. It Worked perfectly with electrodragon, Sonoff dual, s20 and also with an Olimex dev board, but I am having some issues with sonoff single switch (I tried 2 different boards), after configure it, I am not being able to connect to Wifi, they allways says:
[WIFI] ----------------------------------------------
[WIFI] Scanning
[WIFI] No networks found
[WIFI] Creating access point
[WIFI] MODE AP --------------------------------------
[WIFI] SSID SONOFF_953299
[WIFI] PASS xxxxxxxx
[WIFI] IP 192.168.4.1
[WIFI] MAC xx:xx:xx:xx:xx:xx
[WIFI] ----------------------------------------------

Saludos!

gulp-cli needs to installed globally for filesystem build to work

Originally reported by: Denis French (Bitbucket: denisfrench, GitHub: denisfrench)


I was unable to successfully execute 'gulp' following the instructions on the filesystem build wiki page, getting "The term 'gulp' is not recognized as the name of a cmdlet, function..." error. I am on Win10x64.

After much messing around with the system and user PATH statements, and multiple uninstall-reinstallations of node/npm on two machines, I have discovered that gulp-cli must be installed globally first.

I'm not sure if this can be achieved within the package.json file, but the quick fix is to amend the instructions to run "npm install -g gulp-cli" before entering "gulp".

I have confirmed that installing gulp-cli locally (only) results in the original error.

Best regards,
Denis.

Adding support for additional GPIOs

Originally reported by: Mr_Mep (Bitbucket: Mr_Mep, GitHub: Unknown)


Hi,
I managed to connect various sensors (i.e. door and windows sensors, light sensor, PIRs etc.) to the additional GPIOs present on the board.
For example, the basic sonoff model offers a GPIO 14 ready available on a pin, but in general on all sonoffs there's at least one easily accessible free GPIO.

At the moment I added a second button definition and tweaked the main loop in button.ini to have it send an MQTT message (for example "/sensor/0 1" or "/sensor/0 0", but I would love a more general solution to that, maybe with some control in the GUI.

Thanks!

Gianluca

Compile error when building sonoff-dual-debug

Originally reported by: Jay (Bitbucket: ElectricImpossible, GitHub: ElectricImpossible)


I have managed to build sonoff-debug and flashed to my sonoff dual without issue but when attempting to build/compile sonoff-dual-debug i receive the following

*C:/Espurna/code/src/button.ino: In function 'void buttonLoop()':
C:/Espurna/code/src/button.ino:89:50: error: too many arguments to function 'bool relayStatus(unsigned char)'
C:/Espurna/code/src/main.ino:144:6: note: declared here
#endif
*
I believe that as I have managed to flash sonoff-debug that my platform.io is upto spec, but have been recently using this platform for your code.

Dalla DS18B20

Originally reported by: Francesco Boscarino (Bitbucket: webfrank2, GitHub: Unknown)


Hi, I jus added ds18b20 sensor.

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.