Balkon v paneláku

Nedaří se vám s projektem a nenašli jste vhodné místo, kde se zeptat? Napište sem.
Pravidla fóra
Tohle subfórum je určeno pro konzultaci ucelených nápadů, popřípadě řešení komplexnějších projektů, které opravdu není možné rozdělit na menší části.
Většinu problémů jde rozdělit na menší a ptát se na ně v konkrétních subfórech.
sachlj
Příspěvky: 89
Registrován: 10 pro 2020, 19:22
Reputation: 0

Balkon v paneláku

Příspěvek od sachlj » 11 pro 2020, 07:21

Zdravím.
Roky mám na zábradlí balkonu v přízemním bytě na pražském Jarově-Žižkově meteo stanici. Sestava je stanice WH1080 a Raspberry PI3 kde je software weewx které data zpracovává a dělá z nich výstupy. Letos asi po 5 ti letech provozu odešel u RPi ethernetový chip, prostě LAN nefunguje. Hned jsem zapojil jiné a o5 oprášil myšlenku na balkoně měřit ještě něco jiného. Tohle je výstup z weewx.

Hledal jsem tedy nápady a narazil jsem na tento popis, Trochu jsem ho inovoval a připravil 3 (tři) systémy s NodeMCU v3. Inspirací pro jeden mi je tento popis. Musel jsem ho ale upravit a tak všechny hodnoty co se ze senzorů stáhnou se mi posílají do MySQL databáze na mém serveru. Tam se pak budou data zobrazovat formou Grafany a taky ve weewx.
Takže:
1 NodeMCU : senzor PMS5003, MQ-135, BME280 - tato sestava bude vně balkonu aby nasávala skutečně proudící vzduch. Bude to v nějaké ohnuté trubce jako je na prvním odkazu.
2 NodeMCU : CCS811 s úpravou hodnot pomocí BME280 - tato sestava bude na balkoně a bude v krabičce s průduchy osazenými pomalu-otáčkovými ventilátory tak aby se dovnitř hnal vzduch zvnějška ale ne tolik aby ochlazoval BME280.
3 NodeMCU : to je to o které mi v otázce jde : to měří světlo. Senzor VEML6070 měří UV záření, senzor TCS34725 měří vše ostatní. Problém je, že senzory měří jen když je co měřit jinak nic. Nechci pálit čipy na polovinu dne kdy je tma. Proto je kód u tohoto zapojení nejsložitější. Jsou použity knihovny:

Kód: Vybrat vše

#include <NTPClient.h>
#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
#include <WiFiUdp.h>
#include <TimeLib.h>
#include <TimeAlarms.h>
#include <Wire.h>
#include "Adafruit_VEML6070.h"
#include "Adafruit_TCS34725.h"
#include <MySQL_Connection.h>
#include <MySQL_Cursor.h>
Tak a co řeším?
Každých 5 minut dojde k zjištění přesného času z NTP a updrade časovače TimeAlarms. Zároveň se odešle dotaz

Kód: Vybrat vše

void loop() {
 
  if (WiFi.status() == WL_CONNECTED) { //Check WiFi connection status
 
    HTTPClient http;  //Declare an object of class HTTPClient
 
    http.begin("http://api.sunrise-sunset.org/json?lat=50.0874654&lng=14.4212535&formatted=0");  //Specify request destination
    int httpCode = http.GET();                                  //Send the request
 
    if (httpCode > 0) { //Check the returning code
 
      String payload = http.getString();   //Get the request response payload
      Serial.println(payload);             //Print the response payload
      ......
který vrátí tuto odpověď:
{"results":{"sunrise":"2020-12-11T06:51:51+00:00","sunset":"2020-12-11T15:00:06+00:00","solar_noon":"2020-12-11T10:55:59+00:00","day_length":29295,"civil_twilight_begin":"2020-12-11T06:13:40+00:00","civil_twilight_end":"2020-12-11T15:38:17+00:00","nautical_twilight_begin":"2020-12-11T05:32:11+00:00","nautical_twilight_end":"2020-12-11T16:19:46+00:00","astronomical_twilight_begin":"2020-12-11T04:52:47+00:00","astronomical_twilight_end":"2020-12-11T16:59:10+00:00"},"status":"OK"}
Respektive tento dotaz se pošle jen jedenkrát za den a to v 01:00.
A co potřebuji?
Z tohoto vráceného textového řetězce uloženého do proměnné (payload) vytáhnout údaje "civil_twilight_begin":"2020-12-11T06:13:40+00:00","civil_twilight_end":"2020-12-11T15:38:17+00:00" a z nich údaj o hodině a minutě. Tj. 06:13 a 15:38.
Tyto znaky pak převést na čísla, respektive čas, tato dvě hodnoty uložit do proměnných a ty pak porovnávat každých 5 minut s časem. Tj. je víc než východ slunce-ne, nic nedělej, ano pak je čas větší než západ slunce - ano, nic nedělej, jinak změř UV, ostatní hodnoty a odešli je do databáze.

S čím potřebuji pomoct je ten výběr z textu, převod hodnot na čas a naťuknout podmínky. To jsou věci co jsem doposud nepotřeboval. Před léty mi Arduino mega řídila akvárium než jsem pochopil, že příroda se řídit nedá.
V současnosti mi jdou domů z číny nějaké čidla a hlavně měřák PM2,5. Plánuji to na balkon namontovat v březnu, dubnu (až bude teplo). Ale měřit a zasílat data to musí už na stole.
Slibuji, že kódy dám v plen jakmile budou funkční.
Poradí někdo?
Neexistují hloupé otázky, existují jen hloupé odpovědi.
Chci aby "chytrá" elektronika dělala "chytré" a užitečné věci. Tím není aby nahrazovala něco co se dá hotové koupit za pár korun.

jankop
Příspěvky: 1029
Registrován: 06 zář 2017, 20:04
Reputation: 0
Bydliště: Brno
Kontaktovat uživatele:

Re: Balkon v paneláku

Příspěvek od jankop » 11 pro 2020, 09:46

Jenom tři NodeMCU? A není to málo Antone Pavloviči?

sachlj
Příspěvky: 89
Registrován: 10 pro 2020, 19:22
Reputation: 0

Re: Balkon v paneláku

Příspěvek od sachlj » 11 pro 2020, 12:22

Plánoval jsem to dát dohromady do tohoto ale jak jsem se dozvěděl tak je to složitější než NodeMCU. nechci nic přepínat, chci jeden funkční kód.
Apropo. pokud mi neporadíš tak sem nepiš !!!! Chci odpověď na otázku jaké je dnes počasí a nechci odpověď že jsi měl k obědu špagety. Na to se neptám.
Neexistují hloupé otázky, existují jen hloupé odpovědi.
Chci aby "chytrá" elektronika dělala "chytré" a užitečné věci. Tím není aby nahrazovala něco co se dá hotové koupit za pár korun.

jankop
Příspěvky: 1029
Registrován: 06 zář 2017, 20:04
Reputation: 0
Bydliště: Brno
Kontaktovat uživatele:

Re: Balkon v paneláku

Příspěvek od jankop » 11 pro 2020, 12:52

Promiň, odbočil jsem. O parsování stringů a konverzi proměnných se dočteš na arduino.cc

Uživatelský avatar
pavel1tu
Příspěvky: 2054
Registrován: 26 říj 2017, 08:28
Reputation: 0
Bydliště: Trutnov
Kontaktovat uživatele:

Re: Balkon v paneláku

Příspěvek od pavel1tu » 11 pro 2020, 13:50

jankop píše:
11 pro 2020, 12:52
Promiň, odbočil jsem. O parsování stringů a konverzi proměnných se dočteš na arduino.cc
Tak tak,
nakopnu:
- musíš vyhledat znak/znaky, které tam jsou vždy a od nich se odrazit
- osobně bych se odrazil od "begin" a "end" - ty časy co potřebuješ budou za těmito slovy vždy stejný počet znaků.
- vyčíst hodiny/převést na číslo
- vyčíst minuty/převést na číslo
- složit výsledný čas

PS: přeji pěkný zbytek arogantní diskuze
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2, RPi PICO
Pavel1TU
"Správně napsaný kod lze číst jako knihu"

sachlj
Příspěvky: 89
Registrován: 10 pro 2020, 19:22
Reputation: 0

Re: Balkon v paneláku

Příspěvek od sachlj » 11 pro 2020, 15:25

jojo, v česku jsou jen hejtři...můžu se zeptat jinde venku ale chci to řešit tady protože v česku jsou jen tupci, všude venku řeší věci co mění svět ale tady jen "jak bliknou" nebo "jak číst tlačítko".....
Neexistují hloupé otázky, existují jen hloupé odpovědi.
Chci aby "chytrá" elektronika dělala "chytré" a užitečné věci. Tím není aby nahrazovala něco co se dá hotové koupit za pár korun.

Uživatelský avatar
pavel1tu
Příspěvky: 2054
Registrován: 26 říj 2017, 08:28
Reputation: 0
Bydliště: Trutnov
Kontaktovat uživatele:

Re: Balkon v paneláku

Příspěvek od pavel1tu » 11 pro 2020, 17:54

sachlj píše:
11 pro 2020, 15:25
jojo, v česku jsou jen hejtři...můžu se zeptat jinde venku ale chci to řešit tady protože v česku jsou jen tupci, všude venku řeší věci co mění svět ale tady jen "jak bliknou" nebo "jak číst tlačítko".....
Rádi ti tu pomůžeme, ale :
- tvůj kod to ale není, takže jak máme najít chyby, že ti to ten čas nevyzobe, nevíme CO ti nefunguje
- jinak dotaz vrací čistý JSON proč se zbytečně hrabat v nějakém řetězci - JSON lze zpracovat elegantně

- pokud to chceš opravdu jednoduše https://github.com/probonopd/TimeLord používám (ne všude hrabu na net) a funguje dost přesně

PS: na dotaz https://api.sunrise-sunset.org/json?lat ... date=today to je přehlednější, pokud potřebuješ jen čas
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2, RPi PICO
Pavel1TU
"Správně napsaný kod lze číst jako knihu"

sachlj
Příspěvky: 89
Registrován: 10 pro 2020, 19:22
Reputation: 0

Re: Balkon v paneláku

Příspěvek od sachlj » 12 pro 2020, 10:21

Tu knihovnu znám, ale nějak mi nefunguje, odpovídá mi nesmysly.

Kód: Vybrat vše

float const LONGITUDE = 14.48;
float const LATITUDE = 50.08;

void setup()
  {
    
  Serial.begin (115200);
  
  TimeLord tardis; 
  tardis.TimeZone(10 * 60); // tell TimeLord what timezone your RTC is synchronized to. You can ignore DST
  // as long as the RTC never changes back and forth between DST and non-DST
  tardis.Position(LATITUDE, LONGITUDE); // tell TimeLord where in the world we are
  
  byte today[] = {  0, 0, 12, 12, 12, 2020    }; // store today's date (at noon) in an array for TimeLord to use
Sunrise: 16:52
Sunrise: 16:52
Sunset: 1:0
ale našel jsem popis jak to nastavit https://swfltek.com/arduino/timelord_li ... ecated.pdf tak si s tím pohraju, díky.
Neexistují hloupé otázky, existují jen hloupé odpovědi.
Chci aby "chytrá" elektronika dělala "chytré" a užitečné věci. Tím není aby nahrazovala něco co se dá hotové koupit za pár korun.

sachlj
Příspěvky: 89
Registrován: 10 pro 2020, 19:22
Reputation: 0

Re: Balkon v paneláku

Příspěvek od sachlj » 12 pro 2020, 10:54

Už jsem na to přišel a nastavil to, díky. Tak už vyřešeno. Otázku možno zamknout.
Neexistují hloupé otázky, existují jen hloupé odpovědi.
Chci aby "chytrá" elektronika dělala "chytré" a užitečné věci. Tím není aby nahrazovala něco co se dá hotové koupit za pár korun.

sachlj
Příspěvky: 89
Registrován: 10 pro 2020, 19:22
Reputation: 0

Re: Balkon v paneláku

Příspěvek od sachlj » 12 pro 2020, 15:32

Tak problém. TimeLord funguje jen s Adruino UNO, Mega ale ne s NodeMCU. Samotný kód ne. Když ho připojím do kódu co potřebuji tak mi vrátí blbosti.
Neexistují hloupé otázky, existují jen hloupé odpovědi.
Chci aby "chytrá" elektronika dělala "chytré" a užitečné věci. Tím není aby nahrazovala něco co se dá hotové koupit za pár korun.

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 21 hostů