Colorpicker

Niet uitgevoerd maar wellicht in een volgende versie, kleuren thema’s. In het script kun je meerdere locaties opgeven, zoals bijvoorbeeld Thuis en Boot. Om nu in één oogopslag te zien welke locatie zichtbaar is, is het wellicht een idee om bij Boot de achtergrond blauw te maken.

In Visual Basic een klein hulpprogramma gemaakt en in Bascom-AVR een scherm gemaakt met de layout van het weerstation. In het VB programma zijn kleurcombinaties te kiezen, die overigens overeenkomen met de 140 voorgeprogrammeerde kleurcodes van Heiko, de maker van de HX8357C library. Selecteer je een kleur dan is die direct op het in Bascom-AVR geprogrammeerde scherm te zien.

Tot neon-achtige kleurcombinaties aan toe….

Achtergrond kleur en logo’s

In de Bascom-AVR code zijn de kleuren (Crimson, FloralWhite etc.) keihard opgenomen. Stel dat je een andere achtergrond kleur wilt, houdt er rekening mee dat de gebruikte logo’s een zwarte achtergrond hebben. Gelukkig is met een klein trucje deze zwarte logo achtergrond aan te passen aan de achtergrond kleur.

Kopieer de
Sub Lcd_show_bgc(byval Xoffset As Word , Byval Yoffset As Word)
subroutine en noem hem bijvoorbeeld
Sub Lcd_show_bgc_spec(byval Xoffset As Word , Byval Yoffset As Word)

De call om een logo met aangepaste achtergrond op het scherm te zetten wordt dan

Background_color = Blue
Restore Clear_day
Call Lcd_show_bgc_spec(20 , 54)

Maak een nieuw variabele aan genaamd background_color en stop daar de background color in

In de gekopieerde routine pas het gele gedeelde aan

De achtergrond van het logo zal nu dezelfde kleur aannemen als de achtergrond kleur van het geheel.

Darksky.net API aanvragen

Toch nog even voor de volledigheid, het aanvragen van een API-key. Ga naar www.darksky.net

Ga naar Developers

Selecteer Sign-Up

Geef een email-adres op en verzin een wachtwoord. Wachtwoord heb je later nodig bij eventueel troubleshooten.

Je krijgt een API-key die je nodig hebt in de Bascom Arduino-Mega software.

Na een tijdje draaien van het weerstation is te controleren hoeveel calls per dag er worden gedaan. Hier een weekoverzicht. Zorg dat het script in de Bascom software zodanig is opgebouwd dat er niet meer dan 1000 calls per dag plaatsvinden.

Maandoverzicht.

Troubleshooten…..

Toevallig lag vanmorgen de server van Darksky.net , waar de weergegevens vandaag komen, er uit. Inmiddels is ie weer in de lucht.

Hier wat tips om te troubleshooten….

Je kunt vanuit een browser met de volgende regel de weergegevens versie v1 en versie v2 opvragen, dan ga je via de tussenliggende eventcaster.nl server:

http://eventcaster.nl/api/weather/v1.py?apikey=<vul hier je API-key in>&lat=51.5&lon=5&lang=en

Je krijgt, als alles goed is, een summier lijstje met weergegevens.

http://eventcaster.nl/api/weather/v2.py?apikey=<vul hier je API-key in>&lat=51.5&lon=5&lang=en

Dit is de call voor versie V2 en je krijgt, als alles goed is, een uitgebreid lijstje met weergegevens van de huidige en de komende 7 dagen.

Rechtstreeks naar Darksky.net , dus zonder tussenkomst van eventcaster.nl, ziet de regel er als volgt uit:

https://api.darksky.net/forecast/[key]/[latitude],[longitude]

Dit is een voorbeeld van zo’n regel
https://api.darksky.net/forecast/0123456789abcdef9876543210fedcba/42.3601,-71.0589

Het formaat waarin de gegevens binnen komen is het JSON formaat.

Je zou op je desktop een aantal snelkoppelingen kunnen zetten met daarin bovengenoemde regels voorzien van je eigen API-key en longitude en latitude.

Er is een Twitterpagina waarop verstoringen gemeld worden en waar ook reacties van ‘klanten’ te lezen zijn. http://twitter.com/darkskyapp

Verder een status-pagina rondom de API http://status.darksky.net

De Bascom-AVR bestanden – hoofdprogramma

Hier het hoofdprogramma. Weerstation 4.0 versie 1.0. Zaken die ingevuld dienen te worden zijn Access Point naam en wachtwoord. En de API-key die je bij Darksky.net aan dient te vragen. Verder kun je de juiste LONgitude en LATitude invullen. Je kunt controleren of er verbinding gemaakt wordt, en of dat succesvol is door te kijken naar het blokje rechts op de regel Last update Wanneer er verbinding is met Access Point en gegevens worden opgehaald bij Darksky.net zal dit blokje groen worden, in alle andere gevallen is ie rood, of het moet niet mogelijk zijn om verbinding te maken met het Access Point, dan wordt ie gedurende 10 seconden oranje.

Het script dat in het voorbeeldprogramma staat vraagt de huidige weergegevens van Tilburg op, wacht 20 seconden, daarna een weekoverzicht van de minimum en maximum temperaturen. Er zijn geen nieuwe GPS coördinaten doorgegeven, dus de oude zullen worden gebruikt. Dit blijft 40 seconden op het scherm staan. Daarna worden dat GPS coördinaten doorgegeven van Curacao en worden de huidige weergegevens daarvan zichtbaar, wacht 10 seconden, ook weer gevolgd door een weekoverzicht van minimum en maximum temperaturen. Hierna volgt 240 seconden pauze en dan begint de sessie opnieuw.

Weerstation_4_0_version_1_0.bas

Mocht je nog vreemde zaken zien dan kun je me altijd mailen
bzijlstra at home dot nl

Weerstation 3.0 staat hier al meer dan een jaar zo goed als probleemloos te draaien.

De Bascom-AVR bestanden – iconen

‘icons used
Wind:
$bgf “Bilder\wind.bgc” 

Sunset:
$bgf “Bilder\sunset.bgc” 

Snoww:
$bgf “Bilder\snoww.bgc” 

Sleet:
$bgf “Bilder\sleet.bgc” 

Rain:
$bgf “Bilder\rain.bgc” 

Partly_cloudy_night:
$bgf “Bilder\pcn.bgc” 

Partly_cloudy_day:
$bgf “Bilder\pcd.bgc” 

Fog:
$bgf “Bilder\fog.bgc” 

Cloudy:
$bgf “Bilder\cloudy.bgc” 

Clear_night:
$bgf “Bilder\clear_night.bgc” 

Clear_day:
$bgf “Bilder\clear_day.bgc” 

Commando’s vanuit de Arduino Mega naar de ESP8266

De communicatie tussen de Arduino Mega 2560 en het ESP8266 shield gaat via de eerste communicatiepoort van de Arduino naar de UART van de ESP8266. De Arduino Mega wordt via deze communicatiepoort ook voorzien van nieuwe software, dus wil je nieuwe software in de Arduino Mega schieten dan dien je de twee schakelaartjes op het blauwe blokje op het ESP8266 shield op OFF te zetten. Anders krijg je de Arduino niet geflashed.

In de Bascom-AVR code wordt middels een eenvoudige PRINT, op 9600 baud, een commando naar het ESP8266 shield gestuurd en deze zal ook een ‘reply’ sturen.

De complete commando-set bestaat uit het volgende:

Print “SID=AirPort Extreme”
het SSID van het Access Point waarmee verbinding moet worden gemaakt

Print “PSW=GEHEIMWOORD”
het wachtwoord dat gebruikt wordt op dit Access Point

Print “CMD=WiFi.connect”
het commando om verbinding te maken met dit Access Point

Print “API=fe2635<dummy API>dad525b0cd872e”
de API-key die ontvangen is van Darksky.net na aanmelding

Print “LON=5.00”
de longitude van de locatie waarvan de weergegevens weergegeven moeten worden

Print “LAT=51.5”
de latitude van de locatie waarvan de weergegevens weergegeven moeten worden

En nu volgen een reeks commando’s die bij elkaar horen om de weergegevens op te vragen

Print “CMD=GetWeather” – vraag de huidige weergegevens op
Call Parse_current_weatherinfo()

Print “CMD=GetPressure” – weekvoorspelling luchtdruk
Call Parse_pressure_weatherinfo()

Print “CMD=GetHumidity” – weekvoorspelling luchtvochtigheid
Call Parse_humidity_weatherinfo()

Print “CMD=GetMoonphase” – weekvoorspelling maanfase
Call Parse_moonphase_weatherinfo()

Print “CMD=GetCloudcover” – weekvoorspelling bewolking
Call Parse_cloudcover_weatherinfo()

Print “CMD=GetOzone” – weekvoorspelling ozon
Call Parse_ozone_weatherinfo()

Print “CMD=GetTemperature” – weekvoorspelling minimum en maximum temperaturen
Call Parse_temperature_weatherinfo()

Print “CMD=GetWind” – weekvoorspelling windsnelheid en windrichting
Call Parse_wind_weatherinfo()

Print “CMD=GetVisibility” – overzicht huidige zichtbaarheid
Call Parse_visibility_weatherinfo()

Print “CMD=GetPrecip” – weekvoorspelling kans op neerslag en in welke vorm
Call Parse_precip_weatherinfo()

Print “CMD=GetSun” – weekvoorspelling zonsop- en zonsondergang
Call Parse_sun_weatherinfo()

Elke keer dat je een CMD=Getxxx doet, is dat een Call richting Darksky.net en gaat van je maximum van 1000 calls per dag af. Wat er in feite gebeurt is dat er een filter wordt geplaatst op de 240 regels die binnen komen en alleen de regels waar bijvoorbeeld “Wind” in voor komen worden opgeslagen. De Parse routines zorgen er voor dat de opgeslagen regels netjes in de juiste volgorde op het scherm worden gezet. Er komt meer weerinformatie binnen dan dat ik nu verwerk, zo is er bijvoorbeeld “DewPoint” het dauwpunt. Je zou eventueel de commando- en parse-set hierop kunnen uitbreiden.

Tussen de diverse schermen die je opvraagt kun je middels WAIT sec bepalen hoe lang er gewacht moet worden voordat het volgende scherm wordt opgevraagd. Het ‘script’ bevindt zich in een oneindige lus.

Hou er ook rekening mee dat elke CMD=Getxxxx door de ESP8266 automatisch wordt afgesloten met een Wifi.disconnect dus je zult telkens de verbinding op moeten bouwen met Print “CMD=WiFi.connect”