 1cd3a97c51
			
		
	
	1cd3a97c51
	
	
	
		
			
			Fix up the cross module binding for usermods/seven_segment_display_reloaded. This requires splitting off headers for BH1750_v2 and SN_Photoresistor.
		
			
				
	
	
		
			93 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			93 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| 
 | |
| #pragma once
 | |
| #include "wled.h"
 | |
| #include <BH1750.h>
 | |
| 
 | |
| #ifdef WLED_DISABLE_MQTT
 | |
| #error "This user mod requires MQTT to be enabled."
 | |
| #endif
 | |
| 
 | |
| // the max frequency to check photoresistor, 10 seconds
 | |
| #ifndef USERMOD_BH1750_MAX_MEASUREMENT_INTERVAL
 | |
| #define USERMOD_BH1750_MAX_MEASUREMENT_INTERVAL 10000
 | |
| #endif
 | |
| 
 | |
| // the min frequency to check photoresistor, 500 ms
 | |
| #ifndef USERMOD_BH1750_MIN_MEASUREMENT_INTERVAL
 | |
| #define USERMOD_BH1750_MIN_MEASUREMENT_INTERVAL 500
 | |
| #endif
 | |
| 
 | |
| // how many seconds after boot to take first measurement, 10 seconds
 | |
| #ifndef USERMOD_BH1750_FIRST_MEASUREMENT_AT
 | |
| #define USERMOD_BH1750_FIRST_MEASUREMENT_AT 10000
 | |
| #endif
 | |
| 
 | |
| // only report if difference grater than offset value
 | |
| #ifndef USERMOD_BH1750_OFFSET_VALUE
 | |
| #define USERMOD_BH1750_OFFSET_VALUE 1
 | |
| #endif
 | |
| 
 | |
| class Usermod_BH1750 : public Usermod
 | |
| {
 | |
| private:
 | |
|   int8_t offset = USERMOD_BH1750_OFFSET_VALUE;
 | |
| 
 | |
|   unsigned long maxReadingInterval = USERMOD_BH1750_MAX_MEASUREMENT_INTERVAL;
 | |
|   unsigned long minReadingInterval = USERMOD_BH1750_MIN_MEASUREMENT_INTERVAL;
 | |
|   unsigned long lastMeasurement = UINT32_MAX - (USERMOD_BH1750_MAX_MEASUREMENT_INTERVAL - USERMOD_BH1750_FIRST_MEASUREMENT_AT);
 | |
|   unsigned long lastSend = UINT32_MAX - (USERMOD_BH1750_MAX_MEASUREMENT_INTERVAL - USERMOD_BH1750_FIRST_MEASUREMENT_AT);
 | |
|   // flag to indicate we have finished the first readLightLevel call
 | |
|   // allows this library to report to the user how long until the first
 | |
|   // measurement
 | |
|   bool getLuminanceComplete = false;
 | |
| 
 | |
|   // flag set at startup
 | |
|   bool enabled = true;
 | |
| 
 | |
|   // strings to reduce flash memory usage (used more than twice)
 | |
|   static const char _name[];
 | |
|   static const char _enabled[];
 | |
|   static const char _maxReadInterval[];
 | |
|   static const char _minReadInterval[];
 | |
|   static const char _offset[];
 | |
|   static const char _HomeAssistantDiscovery[];
 | |
| 
 | |
|   bool initDone = false;
 | |
|   bool sensorFound = false;
 | |
| 
 | |
|   // Home Assistant and MQTT  
 | |
|   String mqttLuminanceTopic;
 | |
|   bool mqttInitialized = false;
 | |
|   bool HomeAssistantDiscovery = true; // Publish Home Assistant Discovery messages
 | |
| 
 | |
|   BH1750 lightMeter;
 | |
|   float lastLux = -1000;
 | |
| 
 | |
|   // set up Home Assistant discovery entries
 | |
|   void _mqttInitialize();
 | |
| 
 | |
|   // Create an MQTT Sensor for Home Assistant Discovery purposes, this includes a pointer to the topic that is published to in the Loop.
 | |
|   void _createMqttSensor(const String &name, const String &topic, const String &deviceClass, const String &unitOfMeasurement);
 | |
| 
 | |
| public:
 | |
|   void setup();
 | |
|   void loop();
 | |
|   inline float getIlluminance()  {
 | |
|     return (float)lastLux;
 | |
|   }
 | |
| 
 | |
|   void addToJsonInfo(JsonObject &root);
 | |
| 
 | |
|   // (called from set.cpp) stores persistent properties to cfg.json
 | |
|   void addToConfig(JsonObject &root);
 | |
| 
 | |
|   // called before setup() to populate properties from values stored in cfg.json
 | |
|   bool readFromConfig(JsonObject &root);
 | |
| 
 | |
|   inline uint16_t getId()
 | |
|   {
 | |
|     return USERMOD_ID_BH1750;
 | |
|   }
 | |
| 
 | |
| };
 |