Monitor a DIY solarpanel with ASC712 - HELP
-
Has anyone gotten a ASC712 to work with a actuator node?
I'm trying to monitor my diy solar panel, so that I can see what it is producing(if).
I've tried with the code below, but I can't get the node to send the readings to the gateway. I'm using a 30A ASC712 to do the readings. (Don't mind the motion sensor part).
My last code:
// Example sketch showing how to control physical relays. // This example will remember relay state even after power failure. #include <MySensor.h> #include <SPI.h> const int analogIn = A0; int mVperAmp = 66; // use 100 for 20A Module and 66 for 30A Module int RawValue= 0; int ACSoffset = 2500; double Voltage = 0; double Amps = 0; double Voltage_new = 0; double Amps_new = 0; #define RELAY_1 6 // Arduino Digital I/O pin number for first relay (second on pin+1 etc) #define NUMBER_OF_RELAYS 2 // Total number of attached relays #define RELAY_ON 1 // GPIO value to write to turn on attached relay #define RELAY_OFF 0 // GPIO value to write to turn off attached relay // Motion sensor defs unsigned long SLEEP_TIME = 10000; // Sleep time between reports (in milliseconds) #define DIGITAL_INPUT_SENSOR 3 // The digital input you attached your motionsensor. (Only 2 and 3 generates interrupt!) #define INTERRUPT DIGITAL_INPUT_SENSOR-2 // Usually the interrupt = pin -2 (on uno/nano anyway) #define CHILD_ID 3 // Id of the sensor child volatile int state = LOW; boolean lockLow = true; boolean lastTripped = 0; MySensor gw; MyMessage msgMotion(CHILD_ID, V_TRIPPED); MyMessage msgvolt(4, V_VOLTAGE); MyMessage msgcur(5, V_CURRENT); MyMessage msg(CHILD_ID, V_LIGHT); void setup() { // Initialize library and add callback for incoming messages gw.begin(incomingMessage, AUTO, true); // Send the sketch version information to the gateway and Controller gw.sendSketchInfo("Relay/Motion Sensor", "1.0"); // Fetch relay status for (int sensor=1, pin=RELAY_1; sensor<=NUMBER_OF_RELAYS;sensor++, pin++) { // Register all sensors to gw (they will be created as child devices) gw.present(sensor, S_LIGHT); // Then set relay pins in output mode pinMode(pin, OUTPUT); // Set relay to last known state (using eeprom storage) digitalWrite(pin, gw.loadState(sensor)?RELAY_ON:RELAY_OFF); } pinMode(DIGITAL_INPUT_SENSOR, INPUT); // sets the motion sensor digital pin as input // Register all sensors to gw (they will be created as child devices) gw.present(CHILD_ID, S_MOTION); // attachInterrupt(DIGITAL_INPUT_SENSOR, ON, CHANGE); //delay(30000); gw.present(4, V_VOLTAGE); gw.present(5, V_CURRENT); } void loop() { // Alway process incoming messages whenever possible gw.process(); //boolean tripped = (digitalRead(DIGITAL_INPUT_SENSOR) == HIGH); // if (lastTripped != tripped ) { // gw.send(msgMotion.set(tripped?"1":"0")); // Send new state // lastTripped=tripped; // } //Serial.print("Raw Value = " ); // shows pre-scaled value //Serial.print(RawValue); //gw.send(msgvolt); //Serial.print("\t mV = "); // shows the voltage measured //Serial.print(Voltage,3); // the '3' after voltage allows you to display 3 digits after decimal point //Serial.print("\t Amps = "); // shows the voltage measured for ( int i=0; i<=20; i++ ){ RawValue += analogRead(analogIn); delay(50); } Voltage = (RawValue / 1023.0) * 5000; // Gets you mV Amps = ((Voltage - ACSoffset) / mVperAmp); //gw.send(msgcur); Serial.print("mV = "); // shows the voltage measured Serial.println(Voltage); //Serial.println(Amps,3); // the '3' after voltage allows you to display 3 digits after decimal point //delay(2500); } void incomingMessage(const MyMessage &message) { // We only expect one type of message from controller. But we better check anyway. if (message.type==V_LIGHT) { // Change relay state digitalWrite(message.sensor-1+RELAY_1, message.getBool()?RELAY_ON:RELAY_OFF); // Store state in eeprom gw.saveState(message.sensor, message.getBool()); // Write some debug info Serial.print("Incoming change for sensor:"); Serial.print(message.sensor); Serial.print(", New status: "); Serial.println(message.getBool()); } }
Any help would be appreciated
PS: Att HEK - why isn't there a "insert code" button, just like the "insert link" button?
-
@Hausner said:
PS: Att HEK - why isn't there a "insert code" button, just like the "insert link" button?
Sorry. Haven't found any nodebb-plugin which add this in the composer. So you have to surround code with 4 backticks ```` in the meantime.
-
@Hausner Serial Monitor output OK?
-
No, serial monitor was just for testing. I would like to push it to mqtt.
I found the V_VOLTAGE and V_CURRENT, and the serial monotir showed up correctly as 38/39.
-
@Hausner So the problem is with the node transmitting anything to the gateway?
Post the radio messages from the serial monitor and hopefully someone can tell you what's going on..
Suggested Topics
-
Day 1 - Status report
Announcements • 23 Mar 2014, 22:45 • hek 24 Mar 2014, 20:12 -
Getting system time from the controller
Troubleshooting • 27 Feb 2025, 01:39 • dpcons 3 Mar 2025, 01:00 -
JSN-SR04T-V3.0 Coax cable extended
Troubleshooting • 19 Mar 2025, 21:00 • bocalexandru 21 Mar 2025, 12:05 -
NODs stop responding, but ping works.
Troubleshooting • 8 Mar 2025, 19:47 • Marcin 8 Mar 2025, 19:47 -
Compiling Sensor code using BME280 and ESP8266
Troubleshooting • 26 Feb 2025, 00:32 • dpcons 26 Feb 2025, 06:22 -
Echo request is not set
Troubleshooting • 12 Aug 2024, 15:36 • kamilb85 3 Sept 2024, 08:58