Forum Krótkofalarskie PKI

sp5iou
10.01.2018 21:43:44

QTH: Warszawa
Posty: 2083 #2505622
Pewnie vss-owi chodzi o żródło którego nie widać, czyli co wrzuciłem do flasha ESP8266.
Żadna tajemnica, no poza hasłami na domowe AP, bo to oparte na francuskim przykładzie, trochę go wzbogaciłem, bo to ma też móc łazić w robocie po całym domu i móc sobie przełaczać access pointy wifi.

No niestety zrobię bałagan, bo nie widzę mozliwości publikacji kodu, jak na forach informatycznych:

#include <,WiFiClient.h>,
#include <,ESP8266WebServer.h>,
#include <,DHT.h>,
//#include <,Adafruit_BMP085.h>,

const char* ssid[] PROGMEM = "ssid0", "ssid1", "ssid2",
const char* password[] PROGMEM = "pass0", "pass1", "pass2",
const int apn = 3, // number of known Access points
int rssis[3] = -200, -200, -200,
#define MINSIGNAL -95 //Below starts try to find stronger AP
const int serverport = 82,
#define DHTTYPE DHT11 // DHT type (DHT11, DHT22)
#define DHTPIN D4 // DHT Pin
const uint8_t GPIOPIN[4] = D5, D6, D7, D8, // Led
float t = 0 ,
float h = 0 ,
float p = 0,
String etatGpio[4] = "OFF", "OFF", "OFF", "OFF",
int apj = 0, //Access points counter

// create Objects
DHT dht(DHTPIN, DHTTYPE),
//Adafruit_BMP085 bmp,
//ESP8266WebServer server ( 80 ),
ESP8266WebServer server ( serverport ), //Port serverport set above to distinguish from ordinary web pages

String getPage()
String page = "<,html lang='pl'<,head>,<,meta http-equiv='refresh' content='60' name='viewport' content='width=device-width, initial-scale=1'/>,",
page += "<,link rel='stylesheet' href='https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css'>,<,script src='https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js'>,<,/script>,<,script src='https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js'>,<,/script>,",
page += "<,meta charset='utf-8'>,",
page += "<,title>,ESP8266 Stacja Pogodowa<,/title>,<,/head>,<,body>,",
page += "<,div class='container-fluid'>,",
page += "<,div class='row'>,",
page += "<,div class='col-md-12'>,",
page += "<,h1>,Mini stacja meteo & włącznik LED ESP8266<,/h1>,",
page += "<,h3>,Mini stacja meteo<,/h3>,",
page += "<,ul class='nav nav-pills'>,",
page += "<,li class='active'>,",
page += "<,a href='#'>, <,span class='badge pull-right'>,",
page += t,
page += "<,/span>, Temperatura<,/a>,",
page += "<,/li>,<,li>,",
page += "<,a href='#'>, <,span class='badge pull-right'>,",
page += h,
page += "<,/span>, Wilgotność<,/a>,",
page += "<,/li>,<,li>,",

page += "<,a href='#'>, <,span class='badge pull-right'>,",
page += p,
page += "<,/span>, Ciśnienie atmosferyczne<,/a>,<,/li>,",
page += "<,/li>,<,li>,",

page += "<,a href='#'>, <,span class='badge pull-right'>,",
page += ssid[apj],
page += "<,/span>, Połaczenie WiFi z <,/a>,<,/li>,",
page += "<,/li>,<,li>,",

page += "<,a href='#'>, <,span class='badge pull-right'>,",
page += WiFi.RSSI(),
page += "<,/span>, Siła sygnału <,/a>,",
page += "<,/ul>,",

page += "<,table class='table'>,", // Tableau des relevés
page += "<,thead>,<,tr>,<,th>,Czujnik<,/th>,<,th>,Pomiar<,/th>,<,th>,Wartość<,/th>,<,th>,Wartość przewidywana<,/th>,<,/tr>,<,/thead>,", //Entê,te
page += "<,tbody>,", // Contenu du tableau
page += "<,tr>,<,td>,DHT11<,/td>,<,td>,Temperatura<,/td>,<,td>,", // Premiè,re ligne : température
page += t,
page += "°,C<,/td>,<,td>,",
page += " -<,/td>,<,/tr>,",
page += "<,tr class='active'>,<,td>,DHT11<,/td>,<,td>,Wilgotność<,/td>,<,td>,", // 2nd ligne : Humidité
page += h,
page += "%<,/td>,<,td>,",
page += " -<,/td>,<,/tr>,",
page += "<,tr>,<,td>,BMP180<,/td>,<,td>,Ciśnienie atmosferyczne<,/td>,<,td>,", // 3è,me ligne : PA (BMP180)
page += p,
page += " mbar<,/td>,<,td>,",
page += "-<,/td>,<,/tr>,",

page += "<,/tbody>,<,/table>,",
page += "<,h3>,GPIO<,/h3>,",
page += "<,div class='row'>,",
page += "<,div class='col-md-4'>,<,h4 class ='text-left'>,D5 ",
page += "<,span class='badge'>,",
page += etatGpio[0],
page += "<,/span>,<,/h4>,<,/div>,",
page += "<,div class='col-md-4'>,<,form action='/' method='POST'>,<,button type='button submit' name='D5' value='1' class='btn btn-success btn-lg'>,ON<,/button>,<,/form>,<,/div>,",
page += "<,div class='col-md-4'>,<,form action='/' method='POST'>,<,button type='button submit' name='D5' value='0' class='btn btn-danger btn-lg'>,OFF<,/button>,<,/form>,<,/div>,",
page += "<,div class='col-md-4'>,<,h4 class ='text-left'>,D6 ",
page += "<,span class='badge'>,",
page += etatGpio[1],
page += "<,/span>,<,/h4>,<,/div>,",
page += "<,div class='col-md-4'>,<,form action='/' method='POST'>,<,button type='button submit' name='D6' value='1' class='btn btn-success btn-lg'>,ON<,/button>,<,/form>,<,/div>,",
page += "<,div class='col-md-4'>,<,form action='/' method='POST'>,<,button type='button submit' name='D6' value='0' class='btn btn-danger btn-lg'>,OFF<,/button>,<,/form>,<,/div>,",
page += "<,div class='col-md-4'>,<,h4 class ='text-left'>,D7 ",
page += "<,span class='badge'>,",
page += etatGpio[2],
page += "<,/span>,<,/h4>,<,/div>,",
page += "<,div class='col-md-4'>,<,form action='/' method='POST'>,<,button type='button submit' name='D7' value='1' class='btn btn-success btn-lg'>,ON<,/button>,<,/form>,<,/div>,",
page += "<,div class='col-md-4'>,<,form action='/' method='POST'>,<,button type='button submit' name='D7' value='0' class='btn btn-danger btn-lg'>,OFF<,/button>,<,/form>,<,/div>,",
page += "<,div class='col-md-4'>,<,h4 class ='text-left'>,D8 ",
page += "<,span class='badge'>,",
page += etatGpio[3],
page += "<,/span>,<,/h4>,<,/div>,",
page += "<,div class='col-md-4'>,<,form action='/' method='POST'>,<,button type='button submit' name='D8' value='1' class='btn btn-success btn-lg'>,ON<,/button>,<,/form>,<,/div>,",
page += "<,div class='col-md-4'>,<,form action='/' method='POST'>,<,button type='button submit' name='D8' value='0' class='btn btn-danger btn-lg'>,OFF<,/button>,<,/form>,<,/div>,",
page += "<,/div>,",
page += "<,br>,<,p>,<,a href='http://www.projetsdiy.fr'>,www.projetsdiy.fr<,/p>,",
page += "<,/div>,<,/div>,<,/div>,",
page += "<,/body>,<,/html>,",
return page,

void handleRoot()
if ( server.hasArg("D5"oczko )
handleD5(),
else if ( server.hasArg("D6"oczko )
handleD6(),
else if ( server.hasArg("D7"oczko )
handleD7(),
else if ( server.hasArg("D8"oczko )
handleD8(),
else
server.send ( 200, "text/html", getPage() ),



void handleD5()
String D5Value,
updateGPIO(0, server.arg("D5"oczko),


void handleD6()
String D6Value,
updateGPIO(1, server.arg("D6"oczko),


void handleD7()
String D7Value,
updateGPIO(2, server.arg("D7"oczko),


void handleD8()
String D8Value,
updateGPIO(3, server.arg("D8"oczko),


void updateGPIO(int gpio, String DxValue)
Serial.println(""oczko,
Serial.println("Aktualizuj GPIO "oczko, Serial.print(GPIOPIN[gpio]), Serial.print(" ->, "oczko, Serial.println(DxValue),

if ( DxValue == "1" )
digitalWrite(GPIOPIN[gpio], HIGH),
etatGpio[gpio] = "ON",
server.send ( 200, "text/html", getPage() ),
else if ( DxValue == "0" )
digitalWrite(GPIOPIN[gpio], LOW),
etatGpio[gpio] = "OFF",
server.send ( 200, "text/html", getPage() ),
else
Serial.println("Err Led Value"oczko,



void connection()
// Wait for connection
for (apj = 0, apj <, apn, apj++)
rssis[apj] = -200,//Set low strengths for known access points.

WiFi.mode(WIFI_STA),
WiFi.disconnect(),
delay(100),
Serial.println("scan start"oczko,

// WiFi.scanNetworks will return the number of networks found
int n = WiFi.scanNetworks(),
Serial.println("scan done"oczko,
if (n == 0)
Serial.println("no networks found"oczko,
else

Serial.print(n),
Serial.println(" networks found"oczko,
for (int i = 0, i <, n, i++)

// Print SSID and RSSI for each network found
Serial.print(i),
Serial.print(": "oczko,
Serial.print(WiFi.SSID(i)),
Serial.print(" ("oczko,
Serial.print(WiFi.RSSI(i)),
for (apj = 0, apj <, apn, apj++)
if (WiFi.SSID(i) == ssid[apj])
rssis[apj] = int(WiFi.RSSI(i)), // assigns signal strengths to known access points


Serial.print("oczko"oczko,
Serial.println((WiFi.encryptionType(i) == ENC_TYPE_NONE) ? " " : "*"oczko,
delay(10),


Serial.println("Finding the strongest network "oczko,
//Finding the strongest AP.
int maxrssi = -200,
int apjmax = 0,
for (apj = 0, apj <, apn, apj++)
if (rssis[apj] >, maxrssi)
maxrssi = rssis[apj],
apjmax = apj,


apj = apjmax,
WiFi.disconnect(),
delay(1000),
Serial.print("Trying to connect to the strongest known Access Point no "oczko,
Serial.print(apj),
Serial.print(" "oczko,
Serial.print(ssid[apj]),
Serial.print(" Signal strength "oczko,
Serial.println(rssis[apj]),
WiFi.begin ( ssid[apj], password[apj] ),
for (int i = 0, (i <, 30 && WiFi.status() != WL_CONNECTED), i++)
delay ( 500 ), Serial.print ( "." ),

if (WiFi.status() != WL_CONNECTED)
Serial.println(""oczko,
Serial.print("Failed to connect to no "oczko,
Serial.print(apj),
Serial.print(" "oczko,
Serial.println(ssid[apj]),

//If failed for any reasons try to connect to other knowsn AP
while ( WiFi.status() != WL_CONNECTED )
for (apj = 0, apj <, apn && WiFi.status() != WL_CONNECTED, apj++)
Serial.print("Trying to connect to no "oczko,
Serial.print(apj),
Serial.print(" "oczko,
Serial.println(ssid[apj]),
WiFi.begin ( ssid[apj], password[apj] ),
for (int i = 0, (i <, 20 && WiFi.status() != WL_CONNECTED), i++)
delay ( 500 ), Serial.print ( "." ),

if (WiFi.status() != WL_CONNECTED)
Serial.println(""oczko,
Serial.print("Failed to connect to "oczko,
Serial.println(ssid[apj]),

else break,



// WiFi connexion is OK
Serial.println ( "" ),
Serial.print ( "Connected to no " ), Serial.println (apj), Serial.println (" "oczko, Serial.println ( ssid[apj] ),
Serial.print ( "IP address: " ), Serial.println ( WiFi.localIP() ),
Serial.print("Signal strength "oczko,
Serial.println(int(WiFi.RSSI())),
// On branche la fonction qui gè,re la premiere page / link to the function that manage launch page
server.on ( "/", handleRoot ),

server.begin(),
Serial.print ( "HTTP server started on port " ),
Serial.println(serverport),

//********************************************************************************************************

void setup()
for ( int x = 0 , x <, 5 , x++ )
pinMode(GPIOPIN[x], OUTPUT),

delay(5000), //delay for com port to establish.
Serial.begin ( 115200 ),

/*
// Initialisation du BMP180 / Init BMP180
if ( !bmp.begin() )
Serial.println("BMP180 KO!"oczko,
while(1),
else
Serial.println("BMP180 OK"oczko,

*/

connection(),


void loop()
// put your main code here, to run repeatedly:
if (WiFi.status() == WL_CONNECTED && int(WiFi.RSSI()) >, MINSIGNAL)
server.handleClient(),
t = dht.readTemperature(),
h = dht.readHumidity(),
// p = bmp.readPressure() / 100.0F,
delay(500),

else
Serial.print("Lost connection with "oczko,
Serial.println(ssid[apj]),
connection(),


Tu zastosowano upiększacze ze strony bootstrap i właśnie to chcę wywalić i zrobić własne style,
Tu też brakuje suwaków i kontekstowej zmiany atrybutów obiektów.
W moim pythonowym okienku, jak się zapali leda to się kolor buttona zmienmia na jaśniejszy i napis się zmienia na set led off off, no i jest "toggle", nie mówiąc już o suwaczku do kręcenia serwem wesoły.

Do takiego "scope of work" nie potrzeba ani js ani php a już napewno mysql wesoły.

Purystów językowych przepraszam za anglojęzyczne komentarze w kodzie, ale tak się już przyzwyczaiłem i tak też jest praktyczniej.

"Polacy nie gęsi i swój język mają", ale też obce języki znają.

Mikołaj Rej znał Łacinę, Grekę i Bóg wie co jeszcze.

(((73))) Marcin.
Słucham na DMR TG-26056 i 2605 i FM SR5RR. ID: 2605142-portable lub 2605153-home
Warszawa KO02OE, VOT PZK 73
KF: FTDX101D, FT-817ND, FT897, IC735, IC706, FT991, IC7000, UNIDEN2020,
HM: QCX, Forty-9er,uBitX, Pilgrim, Kacper 40m, Taurus 40m,
UKF: Motorola MCX100, Radmor FM315K, IC211E, Intek HR2040, TM-218, QYT KT-8900 i KT8900D, TYT DM380, RT320. Baofengi UV-5R, UV-B6, UV82. FT-817ND, Radioddity GD-77, TYT DM-9600, TYT DMUV380, Anytone D868UV, Anytone D578UV PRO, Anytone D878UV, FT290RII, DM1701, RT-4D
PA: IC2KL(500W), Tuner: LDG600 ProII, LDG11ZPro.
ANT: Multiband InVee, GP7DX, Slooper 160m, Lafayette UV300 i uv200, InV L na samochodzie.
((( NIGDY NIE PRZEKRACZAM MOCY LICENCYJNEJ )))
Niema głupich pytań, spotyka się niezbyt mądre odpowiedzi.
Zobacz ten wpis w wątku
Aby pisać na forum musisz się zalogować !!!
rss · kontakt · załóż własne forum · korzystasz z forum? wesprzyj projekt!