make temp setpoint adjustable

master
agsler 3 years ago
parent 36c37adf7d
commit ce8a75ce44

@ -141,6 +141,9 @@ void ioHelperEdgeDetector(void);
#define BTN_HEIZEN_AN 13 #define BTN_HEIZEN_AN 13
#define BTN_HEIZEN_AUS 14 #define BTN_HEIZEN_AUS 14
#define BTN_HEIZEN_PLUS 15
#define BTN_HEIZEN_MINUS 16
#define BTN_SLAVE_BECKEN_FUELLEN 18 #define BTN_SLAVE_BECKEN_FUELLEN 18
#define BTN_SLAVE_BECKEN_LEEREN 19 #define BTN_SLAVE_BECKEN_LEEREN 19

@ -4,41 +4,60 @@
#include <stdint.h> #include <stdint.h>
#include <stdio.h> #include <stdio.h>
#include "mqtt.h"
extern Client mqtt_client;
uint8_t heizung_state = 0; uint8_t heizung_state = 0;
uint8_t heizung_ontemp = 0; uint8_t heizung_ontemp = 0;
float heizung_setpoint = 40;
void do_heizung(){ void do_heizung(){
if(ADC_reading[1] > 69) if(ADC_reading[1] > heizung_setpoint)
heizung_ontemp = 1; heizung_ontemp = 1;
if(ADC_reading[1] < 66) if(ADC_reading[1] < heizung_setpoint)
heizung_ontemp = 0; heizung_ontemp = 0;
if(heizung_state && !heizung_ontemp){ if(read_Input(BTN_HEIZEN_PLUS, LEVEL) && heizung_setpoint < 80){
gtf_write_register(5, 56, 500); heizung_setpoint += 0.2;
gtf_write_register(6, 56, 500); send_value(&mqtt_client, "/Filamentanlage/02_Wasserbecken/state/heizung_sp", heizung_setpoint);
gtf_write_register(7, 56, 500);
set_Output(LED_HEIZUNG, BLINK);
}
else if(heizung_state && heizung_ontemp){
gtf_write_register(5, 56, 0);
gtf_write_register(6, 56, 0);
gtf_write_register(7, 56, 0);
set_Output(LED_HEIZUNG, ON);
} }
else{
gtf_write_register(5, 56, 0); if(read_Input(BTN_HEIZEN_MINUS, LEVEL) && heizung_setpoint > 5){
gtf_write_register(6, 56, 0); heizung_setpoint -= 0.2;
gtf_write_register(7, 56, 0); send_value(&mqtt_client, "/Filamentanlage/02_Wasserbecken/state/heizung_sp", heizung_setpoint);
set_Output(LED_HEIZUNG, OFF);
} }
if(read_Input(BTN_HEIZEN_AN, LEVEL)){ if(read_Input(BTN_HEIZEN_AN, LEVEL)){
heizung_state = 1; heizung_state = 1;
send_value(&mqtt_client, "/Filamentanlage/02_Wasserbecken/state/heizung", 1);
} }
if(read_Input(BTN_HEIZEN_AUS, LEVEL)){ if(read_Input(BTN_HEIZEN_AUS, LEVEL)){
send_value(&mqtt_client, "/Filamentanlage/02_Wasserbecken/state/heizung", 0);
heizung_state = 0; heizung_state = 0;
} }
}
int8_t comm_heizung(){
int8_t res = 0;
if(heizung_state && !heizung_ontemp){
res |= gtf_write_register(5, 56, 500);
res |= gtf_write_register(6, 56, 500);
res |= gtf_write_register(7, 56, 500);
set_Output(LED_HEIZUNG, BLINK);
}
else if(heizung_state && heizung_ontemp){
res |= gtf_write_register(5, 56, 0);
res |= gtf_write_register(6, 56, 0);
res |= gtf_write_register(7, 56, 0);
set_Output(LED_HEIZUNG, ON);
}
else{
res |= gtf_write_register(5, 56, 0);
res |= gtf_write_register(6, 56, 0);
res |= gtf_write_register(7, 56, 0);
set_Output(LED_HEIZUNG, OFF);
}
return res;
} }

@ -1,2 +1,5 @@
#include <stdint.h>
extern float heizung_setpoint;
void do_heizung(void); void do_heizung(void);
int8_t comm_heizung(void);

@ -112,39 +112,6 @@ void do_notaus(){
} }
} }
//void do_notaus(){
// if(read_Input(IN_NOTAUS_ANLAGE, LEVEL) || read_Input(IN_NOTAUS_SCHRANK, LEVEL)){ // NOTAUS
// set_Output(LED_GRN_NOTAUS_SCHRANK, OFF); // disable green lamps
// set_Output(LED_GRN_NOTAUS_ANLAGE, OFF);
// }
//
// if(read_Input(IN_NOTAUS_ANLAGE, LEVEL) && read_Input(IN_NOTAUS_SCHRANK, LEVEL)){ // both activated
// set_Output(LED_ROT_NOTAUS_ANLAGE, BLINK);
// set_Output(LED_ROT_NOTAUS_SCHRANK, BLINK);
// }
// else if(read_Input(IN_NOTAUS_ANLAGE, LEVEL)){ // top one activated
// set_Output(LED_ROT_NOTAUS_ANLAGE, BLINK);
// set_Output(LED_ROT_NOTAUS_SCHRANK, ON);
// }
// else if(read_Input(IN_NOTAUS_SCHRANK, LEVEL)){ // bottom one activated
// set_Output(LED_ROT_NOTAUS_SCHRANK, BLINK);
// set_Output(LED_ROT_NOTAUS_ANLAGE, ON);
// }
// else{ // none activated
// set_Output(LED_ROT_NOTAUS_SCHRANK, OFF);
// set_Output(LED_ROT_NOTAUS_ANLAGE, OFF);
// if(!read_Input(IN_ANLAGE_EIN_INV, LEVEL)){
// set_Output(LED_GRN_NOTAUS_ANLAGE, ON);
// set_Output(LED_GRN_NOTAUS_SCHRANK, ON);
// }
// else{
// set_Output(LED_GRN_NOTAUS_ANLAGE, ON);
// set_Output(LED_GRN_NOTAUS_SCHRANK, ON);
// set_Output(LED_ROT_NOTAUS_ANLAGE, ON);
// set_Output(LED_ROT_NOTAUS_SCHRANK, ON);
// }
// }
//}
void send_temperatures(void){ void send_temperatures(void){
for(uint8_t i=0; i<sizeof(ADC_reading)/sizeof(ADC_reading[0]);i++){ for(uint8_t i=0; i<sizeof(ADC_reading)/sizeof(ADC_reading[0]);i++){
@ -201,28 +168,19 @@ int main()
printf("--MQTT Connected ERROR: %ld\r\n", mqtt_rc); printf("--MQTT Connected ERROR: %ld\r\n", mqtt_rc);
while(1); //Reboot the board while(1); //Reboot the board
} }
//// Subscribe to all topics
//char SubString[] = "/Filamentanlage/02_Wasserbecken/#";
////char SubString[] = "/Filamentanlage/03_Wasserbecken/#";
//mqtt_rc = MQTTSubscribe(&mqtt_client, SubString, QOS0, messageArrived);
//printf("Subscribed (%s) %ld\r\n", SubString, mqtt_rc);
#endif #endif
set_Output(LED_PLC_OK, BLINK);
ioHelperSetBit(outStatesBlinking, LED_PLC_OK, 1);
//ioHelperSetBit(outStatesBlinking, OUT_VENTIL_ABLASS, 1);
//ioHelperSetBit(outStatesBlinking, OUT_VENTIL_PUMPE, 1);
uint32_t timer_blink_outs = millis(); uint32_t timer_blink_outs = millis();
uint32_t timer_send_uptime = millis(); uint32_t timer_send_uptime = millis();
uint32_t timer_send_temps = millis(); uint32_t timer_send_temps = millis();
uint32_t timer_gtf_comm = millis();
printf("anlage: %x\n\r", read_Input(IN_ANLAGE_EIN_INV, LEVEL));
send_value(&mqtt_client, "/Filamentanlage/02_Wasserbecken/connected", 1); send_value(&mqtt_client, "/Filamentanlage/02_Wasserbecken/connected", 1);
send_value(&mqtt_client, "/Filamentanlage/02_Wasserbecken/state/pumpe_warm", -1); send_value(&mqtt_client, "/Filamentanlage/02_Wasserbecken/state/pumpe_warm", 0);
send_value(&mqtt_client, "/Filamentanlage/02_Wasserbecken/state/heizung", 0);
send_value_fl(&mqtt_client, "/Filamentanlage/02_Wasserbecken/state/heizung_sp", heizung_setpoint, 0);
gtf_init(5); gtf_init(5);
gtf_init(6); gtf_init(6);
@ -248,14 +206,6 @@ int main()
if(millis() - timer_send_temps > 5000){ if(millis() - timer_send_temps > 5000){
timer_send_temps = millis(); timer_send_temps = millis();
send_temperatures(); send_temperatures();
//printf("gefran firm: 0x%02X\n", gtf_firmware_version(5));
printf("gefran 5 OuP: 0x%02X\n", gtf_read_register(5, GTF_OuP));
printf("gefran 6 OuP: 0x%02X\n", gtf_read_register(6, GTF_OuP));
printf("gefran 7 OuP: 0x%02X\n", gtf_read_register(7, GTF_OuP));
//printf("gefran stat3: 0x%02X\n", gtf_read_register(5, 117));
////printf("gefran stell: 0x%02X\n", gtf_read_register(5, 56));
////printf("gefran disp: 0x%02X\n", gtf_read_register(5, 0));
//printf("gefran coil: 0x%02X\n", gtf_read_coil(5, 0));
//send_value(&mqtt_client, "/Filamentanlage/02_Wasserbecken/state/gtf5_power", gtf_read_register(5, GTF_POWER)); //send_value(&mqtt_client, "/Filamentanlage/02_Wasserbecken/state/gtf5_power", gtf_read_register(5, GTF_POWER));
@ -271,6 +221,11 @@ int main()
} }
} }
if(millis() - timer_gtf_comm > 200){
timer_gtf_comm = millis();
comm_heizung();
}
// send misc info // send misc info
if(millis() - timer_send_uptime > 5000){ if(millis() - timer_send_uptime > 5000){
timer_send_uptime = millis(); timer_send_uptime = millis();
@ -281,12 +236,14 @@ int main()
do_notaus(); do_notaus();
do_heizung(); do_heizung();
#if PLC_MQTT_ENABLED
ioHelperSetBit(outStates, LED_BUS_OK, 1); ioHelperSetBit(outStates, LED_BUS_OK, 1);
ioHelperSetOuts(); ioHelperSetOuts();
#if PLC_MQTT_ENABLED
MQTTYield(&mqtt_client, 10); //blocking call MQTTYield(&mqtt_client, 10); //blocking call
ioHelperSetBit(outStates, LED_BUS_OK, 0); #else
_delay_ms(1);
#endif #endif
ioHelperSetBit(outStates, LED_BUS_OK, 0);
ioHelperSetOuts(); ioHelperSetOuts();
} }
return 0; return 0;