TODO あとでちゃんと書きなおす(余裕があれば)
飛ばす方 ソース
#include <M5Stack.h>
#include <MHZ19.h>
#include <WiFi.h>
#include <HTTPClient.h>
#define RX 16
#define TX 17
#define INTERVAL 6
const char* ssid = "XXXXXXX";
const char* password = "XXXXXXX";
MHZ19 myMHZ19;
HardwareSerial mySerial(1);
void setup(){
M5.begin();
M5.Power.begin();
M5.Lcd.setTextSize(5);
M5.Lcd.print("start");
Serial.begin(115200);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
M5.Lcd.print(".");
}
M5.Lcd.println("\r\n connected");
M5.Lcd.print(WiFi. localIP());
mySerial.begin(9600,SERIAL_8N1,RX,TX);
delay(100);
myMHZ19.begin(mySerial);
myMHZ19.autoCalibration(false);
delay(2000);
}
int count = 0;
int co2 = 0;
void loop()
{
if ((count % INTERVAL) == 0 ) {
co2 = myMHZ19.getCO2();
displayCo2(co2);
doPost(co2);
} else {
M5.Lcd.print(".");
}
count++;
delay(1000);
}
void displayCo2(int co2) {
M5.Lcd.clear();
M5.Lcd.setCursor(0, 0);
M5.Lcd.println("CO2 ppm");
M5.Lcd.print(co2);
}
void doPost(int co2){
char json[30];
sprintf(json, "{\"co2\": \"%d\"}", co2);
Serial.println(json);
HTTPClient http;
http.begin("http://192.168.1.3:8081/");
http.addHeader("Content-Type", "application/json");
int httpCode = http.POST(json);
delay(1000);
Serial.printf("[HTTP] GET... code: %d\n", httpCode);
http.end();
}
受けるほう ソース index.ts (雰囲気)
import express from 'express'
import moment from 'moment'
const app: express.Express = express()
app.use(express.json())
app.use(express.urlencoded({ extended: true }))
app.use(express.static('public'))
app.listen(8081, () => {
console.log('Running at Port 8081...')
})
app.post('/', (req, res)=> {
console.log("call")
// console.log(moment().format())
console.log(req.body )
res.send('OK')
})
app.use((req, res) => {
res.sendStatus(404)
})
URLの指定で末尾の/が抜けているとM5Stackがエラー&リブートを繰り返した。結構はまった。