ahoy

Various tools, examples, and documentation for communicating with Hoymiles microinverters

OTHER License

Stars
949
Committers
84

Bot releases are visible (Hide)

ahoy - ahoy_v0.8.140 Latest Release

Published by github-actions[bot] 2 months ago

Changelog v0.8.140

  • added HMS-400-1T support (serial number 1125...)
  • added further ESP8266 versions (-all, -minimal) because of small ressources on ESP8266
  • added some Gridprofiles
  • added support for characters in serial number of inverter (A-F)
  • added default coordinates on fresh install, needed for history graph on display and WebUI
  • added option to reset values on communication start (sunrise)
  • added max inverter temperature to WebUI
  • added yield day to history graph
  • added script and instructions how to generate factory firmware which includes predefined settings
  • added button for downloading coredump (ESP32 variants only) to /system. Once a crash happens the reason can be checked afterwards (even after a reboot)
  • added support of HERF inverters, serial number is converted in Javascript
  • added device name to HTML title
  • added feature to restart Ahoy using MqTT
  • added feature to publish MqTT messages as JSON as well (new setting)
  • add timestamp to JSON output
  • improved communication to inverter
  • improved translation to German
  • improved HTML pages, reduced in size by only including relevant contents depending by chip type
  • improved history graph in WebUI
  • improved network routines
  • improved Wizard
  • improved WebUI by disabling upload and import buttons when no file is selected
  • improved queue, only add new object once they not exist in queue
  • improved MqTT OnMessage (threadsafe)
  • improved read of alarms, prevent duplicates, update alarm time if there is an update
  • improved alarms are now sorted in ascending direction
  • improved by prevent add inverter multiple times
  • improved sending active power controll commands
  • improved refresh routine of ePaper, full refresh each 12h
  • redesigned WebUI on /system
  • changed MqTT retained flags
  • change MqTT return value of power limit acknowledge from boolean to float. The value returned is the same as it was set to confirm reception (not the read back value)
  • converted ePaper and Ethernet to hal-SPI
  • combined Ethernet and WiFi variants - Ethernet is now always included, but needs to be enabled if needed
  • changed: Ethernet variants (W5500) now support WiFi as fall back / configuration
  • switch AsyncWebserver library
  • fixed autodiscovery for homeassistant
  • fix reset values functionality
  • fix read back of active power control value, now it has one decimal place
  • fix NTP issues
  • fixed MqTT discovery field ALARM_MES_ID
  • fix close button color of modal windows in dark mode
  • fixed calculation of max AC power
  • fixed reset values at midnight if WiFi isn't available
  • fixed HMT-1800-4T number of inputs
  • fix crash if invalid serial number was set -> inverter will be disabled automatically
  • fixed ESP8266, ESP32 static IP
  • fixed ethernet MAC address read back
  • update several libraries to more recent versions
  • removed yield efficiency because the inverter already calculates correct

full version log: Development Log

ahoy - ahoy_v0.8.83

Published by github-actions[bot] 8 months ago

Changelog v0.8.83

  • added German translations for all variants
  • added reading grid profile
  • added decimal place for active power control (APC aka power limit)
  • added information about working IRQ for NRF24 and CMT2300A to /system
  • added loss rate to /visualization in the statistics window and MqTT
  • added optional output to display whether it's night time or not. Can be reused as output to control battery system or mapped to a LED
  • added timestamp for max ac power as tooltip
  • added wizard for initial WiFi connection
  • added history graph (still under development)
  • added simulator (must be activated before compile, standard: off)
  • added minimal version (without: MqTT, Display, History), WebUI is not changed! (not compiled automatically)
  • added info about installed binary to /update
  • added protection to prevent update to wrong firmware (environment check)
  • added optional custom link to the menu
  • added support for other regions (USA, Indonesia)
  • added warning for WiFi channel 12-14 (ESP8266 only)
  • added max_power to MqTT total values
  • added API-Token authentification for external scripts
  • improved MqTT by marking sent data and improved last_success resends
  • improved communication for HM and MI inverters
  • improved reading live data from inverter
  • improved sending active power control command faster
  • improved /settings: pinout has an own subgroup
  • improved export by saving settings before they are exported (to have everything in JSON)
  • improved code quality (cppcheck)
  • seperated sunrise and sunset offset to two fields
  • fix MqTT night communication
  • fix missing favicon to html header
  • fix build on Windows of opendtufusion environments (git: trailing whitespaces)
  • fix generation of DTU-ID
  • fix: protect commands from popup in /live if password is set
  • fix: prevent sending commands to inverter which isn't active
  • combined firmware and hardware version to JSON topics (MqTT)
  • updated Prometheus with latest changes
  • upgraded most libraries to newer versions
  • beautified typography, added spaces between value and unit for /visualization
  • removed add to total (MqTT) inverter setting

full version log: Development Log

ahoy - ahoy_v0.8.36

Published by github-actions[bot] 10 months ago

Changelog v0.8.36

  • added dim option for LEDS
  • changed reload time for opendtufusion after update to 5s
  • fix default interval and gap for communication
  • fix serial number in exported json (was decimal, now correct as hexdecimal number)
  • beautified factory reset
  • added second stage for erase settings
  • increased maximal number of inverters to 32 for opendtufusion board (ESP32-S3)
  • fixed crash if CMT inverter is enabled, but CMT isn't configured

full version log: Development Log

ahoy - ahoy_v0.8.34

Published by github-actions[bot] 10 months ago

Changelog v0.8.34

  • improve communication, all inverters are polled during interval
  • add hardware info, click on inverter name (in /live)
  • added RSSI info for HMS and HMT inverters (MqTT + REST API)
  • add signal strength for NRF24
  • change ePaper text to symbols
  • 2.42" display (SSD1309) integration
  • moved active power control to modal in /live view (per inverter) by click on current APC state
  • moved radio statistics into the inverter - each inverter has now seperate statistics which can be accessed by click on the footer in /live
  • serveral improvements for MI inverters
  • add total AC Max Power to WebUI
  • added inverter-wise power-level, frequency and night-communication
  • added privacy mode option (/serial)
  • added button copy to clipboard to /serial
  • added ms to /serial
  • fixed range of HMS / HMT frequencies to 863 to 870 MHz
  • read grid profile (live -> click inverter name -> show grid profile)
  • moved MqTT info to /system
  • beautified /system
  • added current AC-Power to /index page and removed version
  • added default pins for opendtu-fusion-v1 board
  • added default pins for ESP32 with CMT2300A (matching OpenDTU)
  • added ethernet build for fusion board
  • added ESP32-S2 to github actions
  • added ESP32-S3-mini to github actions
  • added ESP32-C3-mini to github actions
  • add option to reset 'max' values on midnight
  • luminance of display can be changed during runtime
  • added developer option to use 'syslog-server' instead of 'web-serail'
  • added / renamed alarm codes
  • changed MqTT alarm topic, removed retained flag
  • added default input power to 400 while adding new inverters

full version log: Development Log

ahoy - ahoy_v0.7.36

Published by github-actions[bot] about 1 year ago

Changelog v0.7.36

  • added Ethernet variant
  • fix configuration of ePaper
  • fix MI inverter support
  • endpoints /api/record/live, /api/record/alarm, /api/record/config, /api/record/info are obsolete
  • added /api/inverter/alarm/[ID] to read inverter alarms
  • added Alarms in Live View as modal window
  • added MqTT transmission of last 10 alarms
  • updated documentation
  • changed ESP8266 default NRF24 pin assignments (D3 = CE and D4 = IRQ)
  • changed live view to gray once inverter isn't available -> fast identify if inverters are online
  • added information about maximum power (AC and DC)
  • updated documentation
  • several small fixes
ahoy - ahoy_v0.7.26

Published by github-actions[bot] about 1 year ago

Changelog v0.7.26

  • fix MqTT last_success
ahoy - ahoy_v0.7.25

Published by github-actions[bot] about 1 year ago

Changelog v0.7.25

  • ✨ added 'HMS' and 'HMT' support with 'CMT2300A' radio module and ESP32
  • improved MqTT
  • added more display types
  • changed maximum number of inverters: ESP32: 16, ESP8266: 4
  • added option to connect to hidden SSID WiFi
  • AP password is configurable now
  • add option to communicate with inverters even if no time sync is possible
  • add option to reboot Ahoy perodically at midnight
  • add time, date and Ahoy-Version number to JSON export
  • changed date-time format to ISO format in web UI
  • added inverter state machine to archive better its state
  • added for NTP sync more info to web UI about the sync itself
  • increased to latest library versions (MqTT, RF24 and JSON)
  • minor UI improvements
  • several bug fixes
ahoy - ahoy_v0.6.9

Published by github-actions[bot] over 1 year ago

Changelog v0.6.9

  • improved MqTT
  • fix WiFi hostname during boot up
  • improved login: only one session at the same time is possible
  • fix UI: login screen for small displays; burger menu height; small modifications for import button (in setup)
  • improved WiFi reconnect
  • optimized performance: browser caching was improved to reduce requests from ESP
  • improved NRF24 communication for more stable data transmission
  • added / fixed MqTT subscription ctrl/power/[IV-ID]
  • improved save settings
  • improved UI in setup: now . and , are allowed as floating point seperator
  • fix zero yield day functionality
  • LEDs are now configurable to show if 1st inverter is available and if MqTT is connected
  • LED are configurable to active high or low
ahoy - ahoy_v0.6.0

Published by github-actions[bot] over 1 year ago

Changelog v0.6.0

Warning: The default pinout for ESP32 has changed. The SPI Pins MOSI, MISO and SCLK are now configurable. If you do an update from an older version make sure that these pins do not have 0 as their value.
This definition is our default for ESP32: MISO = 19, MOSI = 23 and SCLK = 18

General

  • improved night time calculation time to 1 minute after last communication pause #515
  • refactored code for better readability
  • improved Hoymiles commuinication (retransmits, immediate power limit transmission, timing at all)
  • renamed firmware binaries
  • add login / logout to menu
  • add display support for SH1106, SSD1306, Nokia and ePaper 1.54" (ESP32 only)
  • add yield total correction - move your yield to a new inverter or correct an already used inverter
  • added import / export feature
  • added Prometheus endpoints
  • improved wifi connection and stability (connect to strongest AP)
  • addded Hoymiles alarm IDs to log
  • improved System information page (eg. radio statitistics)
  • improved UI (repsonsive design, (optional) dark mode)
  • improved system stability (reduced heap-fragmentation, don't break settings on failure) #644, #645
  • added support for 2nd generation of Hoymiles inverters, MI series
  • improved JSON API for more stable WebUI
  • added option to disable input display in /live (max-power has to be set to 0)
  • updated documentation
  • improved settings on ESP32 devices while setting SPI pins (for NRF24 radio)

MqTT

  • added comm_disabled #529
  • added fixed interval option #542, #523
  • improved communication, only required publishes
  • improved retained flags
  • added set_power_limit acknowledge MQTT publish #553
  • added feature to reset values on midnight, communication pause or if the inverters are not available
  • partially added Hoymiles alarm ID
  • improved autodiscover (added total values on multi-inverter setup)
  • improved clientID a part of the MAC address is added to have an unique name
ahoy - ahoy_v0.5.66

Published by github-actions[bot] almost 2 years ago

Changelog v0.5.66

Note: Version 0.5.42 to 0.5.65 were development versions. Last release version was 0.5.41
Detailed change log (development changes): https://github.com/lumapu/ahoy/blob/945a671d27d10d0f7c175ebbf2fbb2806f9cd79a/src/CHANGES.md

  • updated REST API and MQTT (both of them use the same functionality)
  • improved stability
  • Regular expressions for input fields which are used for MQTT to be compliant to MQTT
  • WiFi optimization (AP Mode and STA in parallel, reconnect if local STA is unavailable)
  • improved display of /system
  • fix Update button protection (prevent double click #527)
  • optimized scheduler #515
  • fix of duplicates in API /api/record/live (#526)
  • added update information to index.html (check for update with github.com)
  • fix web logout (auto logout)
  • switched MQTT library
  • removed MQTT available_text (can be deducted from available)
  • enhanced MQTT documentation in User_Manual.md
  • changed MQTT topic status to nummeric value, check documentation in User_Manual.md
  • added immediate (each minute) report of inverter status MQTT #522
  • increased MQTT user, pwd and topic length to 64 characters + \0. (The string end \0 reduces the available size by one) #516
  • added disable night communication flag to MQTT #505
  • added MQTT /status to show status over all inverters
  • added MQTT RX counter to index.html
  • added protection mask to select which pages should be protected
  • added monochrome display that show values also if nothing changed and in offline mode #498
  • added icons to index.html, added WiFi-strength symbol on each page
  • refactored communication offset (adjustable in minutes now)
  • factory reset formats entire little fs
  • renamed sunrise / sunset on index.html to start / stop communication
  • fixed static IP save
  • fix NTP with static IP
  • all values are displayed on /live even if they are 0
  • added NRF24 info to Systeminfo
  • reordered enqueue commands after boot up to prevent same payload length for successive commands
ahoy - ahoy_v0.5.41

Published by github-actions[bot] almost 2 years ago

Changelog

  • fix browser sync NTP button
  • added login feature (protect web ui)
  • added static IP option
  • improved initial boot - don't connect to YOUR_WIFI_SSID any more, directly boot into AP mode
  • added status LED support
  • improved MQTT handling (boot, periodic updates, no zero values any more)
  • replaced deprecated workflow functions
  • refactored code to make it more clearly
  • added scheduler to register functions which need to be run each second / minute / ...
  • changed settings to littlefs (-> no currupt settings in future on memory layout changes)
  • added a lot of system infos to System page for support
ahoy - ahoy_v0.5.28

Published by github-actions[bot] almost 2 years ago

Changelog

  • increased stability
  • switched to AsyncWebserver
  • improved API (JSON)
  • deliver html as static pages with asynchronous XHR requests
  • improved MQTT message handling
  • improved plausibility checks on payload (length of message is used now)
  • improved message queue and their parsers
  • added serial web console
  • added night communication pause (sunrise and sunset)
  • moved power limit from setup to serial page
  • improved web GUI (responsive and central menu)
  • added button for homeassistant autodiscover in setup (not sent automatically any more)
  • added wifi RSSI to index
  • added feature to scan Wifi in settings for easier setup
  • fixed negative tempertures from inverter (was not correctly interpreted in last version)
  • added RX no answer counter
  • improved DTU ID, is now generated from MAC of ESP
  • added feature to synchronize time from browser
  • added styleguide for code
  • fixed several bug reported in Github
ahoy - ahoy_v0.5.17

Published by github-actions[bot] about 2 years ago

Changelog

  • v0.5.17
    • Bug fix for 1 channel inverters (HM300, HM400) see #246
    • Bug fix for read back the active power limit from inverter #243 (before version 0.5.16 the reported limit was just a copy of the user set point, now it is the actual value which the inverter uses)
    • Update the user manual; added section aobut the published data on mqtt; section about zero export control; added section about code implementation command queue
    • Added tx-Id number to packet payload struct. (eg. can be 0x95 or 0xD1) --> less messages fails and faster handling of changing power limit
ahoy - ahoy_v0.5.16

Published by github-actions[bot] about 2 years ago

Changelog

  • v0.5.16

    • Add alarm messages dictonary in the hminverter class
    • show last alarm message in the overview after receiving the message id from the AlarmData command
    • Added No-PowerLimit function/setting (thx @lumapu)
    • Bug fix #195 trailing and leading spaces in setup parameters (thx @lumapu)
    • Added parametric CAD model for a case (thx @cubinet-code)
    • Code styling improvements (eg. dynamic creation of html code) (thx @stefan123t, @lumapu)
    • Mqtt publish action is now after successful parse a payload, no own ticker
    • Fixes/improvements #183, #184, #216, #213, #196, #176, #171
  • v0.5.15

    • Bug fix: mqtt payload handling (thx @klahus1, silverserver)
    • Bug fix: eeprom alignment fixed (thx @klahus1)
    • mqtt reconnect improvements (thx @tastendruecker123 , @HorstG-57 )
    • simple command scheduler (one place fifo)
    • InverterDevInform_All Command parser and output to mqtt
    • New workflow to build github release
    • Introduction of a command queue (like OpenDTU)
    • Feedback from inverter for actual power limit via InfoCmd -> SystemConfigPara (0x05) placed in visualization
    • REST API will enqueue a new info command (all commands supported)
    • Change in power limit will (Setup, MQTT or REST API) enqueues a new infocmd request to get actual power limit
    • Actual power limit is available under MQTT topic //ch0/PowerLimit ALWAYS in percent
    • Firmware information will be requested automatically up on start of dtu
    • Added User_Manual.md
  • v0.5.14

  • v0.5.13

  • v0.5.12

  • v0.5.11

  • v0.5.10

  • v0.5.9 *fix PowerLimit PowerPFDev.Desc=0x0001 for permanent

  • v0.5.8 *fix #146 device name in setup

  • v0.5.7 *add collapsible setup

  • v0.5.6 *fix only MQTT sub after the first loop in a conenction

  • v0.5.5 *fixed MQTT sub only after connection is established (HorstG-57)
    + added in app.cpp some compiler if statements
    *fix: compile possible for non repository versions (if project was download as zip - lumapu)
    *fix README.md - Update line 69 (RF24 1.4.2 -> 1.4.5) (DanielR92)
    *Update hmRadio.h (lumapu)

  • v0.5.4 + added Github report text with a URL (aschiffler)
    + added auto_firmware_version.py for GIT_HASH
    + added switch case AlarmData/AlarmUpdate

  • v0.5.3 #Bugfix #125 PowerLimit
    + prototype webapi to get info, improved pwr limit (aschiffler)
    + Merge remote-tracking branch 'upstream/main' into pwrlimit

  • v0.5.2 add #114 ntp_server_name and port to eeprom
    + stefan123t added some functions (devcontrol/cbMqtt/...)

  • v0.5.1 *Merge branch 'upstream/HEAD' into control
    *update revision (0.4.26 -> 0.5.1)

  • v0.4.26 first poc for power set via mqtt

  • v0.4.25 added default SERIAL/MQTT/SEND_INTERVAL #100, fixed env:node_mcu_v2 build #101

  • v0.4.24 added fixes for #63, #88, #93. revert #36 (*) EEPROM changes

  • v0.4.23 added workflow, fix index.html to load inverter info immediately, changed timestamp to 1 for stand alone ESP #90, Implement MQTT discovery for Home Assistant

  • v0.4.22 compiles with PlatformIO

  • v0.4.21 reduced warnings

  • v0.4.20 improved setup (if no data is in EEprom), improved NRF24 Pinout regarding to #36, Standard Pinout should be now: #36 (comment), add JSON output, fix favicon, improve eeprom default settings (*) EEPROM changes

  • v0.4.19 updated debug messages: now 5 different levels are available, fixed CRC loop issue, add fritzing/schematics for Arduino, Raspberry Pi and NodeMCU

  • v0.4.18 Creative Commons NC-SA-BY v3.0 license included, tried to increase stability, fix NRF24 CRClength, add debug & documentation links, added variable error messages using #pragma error

  • v0.4.17 add printed circuit board layout, more debug output (#retransmits), improved loop counters (*) EEPROM changes

  • v0.4.16 request only one inverter per loop (#53 (comment)), mqtt loop interval calculated by # of inverters and inverter request interval, limit maximum number of retries, added feature request #62 (readable names for channels), improved setup page, added javascript to hide / show channel fields (*) EEPROM changes

  • v0.4.15 reduced debug messages, fixes after merge

  • v0.4.14 added RX channel 40, improved RF24 ISR, reduced AP active time to 60s (will be increase once a client is connected), added yield without success -> random reboot (cause 4) (*) EEPROM changes

  • v0.4.13 rename to AHOY-DTU, add RX channel 40, update stats on index based on mSendInterval, MQTT Interval, EEPROM CRC settings, fix #56 v0.4.10 ESP8266 stuck in boot loop

  • v0.4.12 version skipped ?

  • v0.4.11 inverter dependent mqtt (is avail), implemented heap stats #58, inserted 'break' in ISR while loop

  • v0.4.10 reduced heap size (>50%) by using 'F()' for (nearly) all static strings, added Wemos D1 case STL files

  • v0.4.9 try to fix mqtt and wifi loss issue #52, document libraries (*) EEPROM changes

  • v0.4.8 moved mqtt loop out of checkTicker as mentioned in #49, added irritation and efficiency calculations, improved style (*) EEPROM changes

  • v0.4.7 version skipped ?

  • v0.4.6 version skipped ?

  • v0.4.5 fix #38 4-channel inverter current assignment, added last received timestamp in /hoymiles livedata web page #47, improved style.css, improved NTP as described in #46

  • v0.4.4 added free heap, mentioned in #24 (added in serial print, status on index and mqtt), fixed #45, AC current by factor 10 too high, fixed failed payload counter

  • v0.4.3 fixed #41 HM800 Yield total and Yield day were mixed around. Found issue while comparing to Python version, fixed #43 HM350 channel 2 is displayed in Live-View, added #42 YieldTotal and YieldTotal Day for HM600 - HM800 inverters

  • v0.4.2 fix #39 Assignment 2-Channel inverters (HM-600, HM-700, HM-800)

  • v0.4.1 multi inverter support, full re transmit included

  • v0.4.0 complete payload processed (and crc checked), inverter type is defined by serial number, serial debug can be switched live (using setup), Note: only one inverter is supported for now!

  • v0.3.9 fix #26 ticker / interval in app.cpp

  • v0.3.8 improved stability (in comparison to 0.3.7), reset wifi AP timout once a client is detected, fix #26 wrong variable reset

  • v0.3.7 added rx channel switching, switched to crc8 check for valid packet-payload

  • v0.3.6 improved tickers, only one ticker is active, added feature to use the ESP as access point for all the time, added serial features to setup

  • v0.3.5 fixed erase settings, fixed behavior if no MQTT IP is set (the system was nearly unusable because of delayed responses), fixed Station / AP WiFi on startup -> more information will be printed to the serial console, added new ticker for serial value dump

  • v0.3.4 added config.h for general configuration, added option to compile WiFi SSID + PWD to firmware, added option to configure WiFi access point name and password, added feature to retry connect to station WiFi (configurable timeouts), updated index.html, added option for factory reset, added info about project on index.html, moved "update" and "home" to footer, fixed #23 HM1200 yield day unit, fixed DNS name of ESP after setup (some commits before)

  • v0.3.3 converted to "poor-man-ticker" using millis() for uptime, send and mqtt, added inverter overview, added send count to statistics

  • v0.3.2 compile of merge, binary published on https://www.mikrocontroller.net/topic/525778?goto=7051413#7051413

  • v0.3.1 fix: doCalculations was not called

  • v0.3.0 version 0.3.0, added unit test
    (*) EEPROM changes require settings to be changed, your settings will be overwritten and need to be set again!

Badges
Extracted from project README
CC BY-NC-SA 4.0 Ahoy Build Ahoy Dev Build CC BY-NC-SA 4.0
Related Projects