OK

Při poskytování služeb nám pomáhají soubory cookie. Používáním našich služeb vyjadřujete souhlas s naším používáním souborů cookie. Více informací

Úvodní stránka » Aktuální články » Mini webserver NodeMCU s teploměrem DS18B20

Mini webserver NodeMCU s teploměrem DS18B20

V minulém článku jsme se seznámili s velmi zajímavým modulem NodeMCU a ukázali jsme si, jak jej uchopit pro praktické projekty. Dneska si ukážeme, jak jednoduše vytvořit malý webový server, který nám bude ukazovat teploty doma a venku.

HW s NodeMCU

Pro měření teploty použijeme známá čidla Dallas 18B20 a budeme potřebovat ještě jeden rezistor 4k7 jako pullup na OneWire sběrnici. Zde je velmi výhodné použít rezistor v pouzdru SMD 0805, protože se dá pohodlně zapájet mezi pin D4 a 3.3V, který je hned vedle přímo na modul NodeMCU. Na piny NodeMCU tak zbývá pouze připojit samotný teploměr nebo teploměry. HW je patrný z níže uvedeného obrázku:

Sketch

Sketch vychází z examplu jednoduchého serveru, který jsem doplnil o podporu sběrnice OneWire a knihovnou proobsluhu DS18B20 tak, aby implementace byla co nejjednodušší. Ve skutečnosti je sketch poměrně náročný, ale naštěstí je vše hezky zabaleno v dost dobře funkčních knihovnách ESP8266WiFi, WiFiClient, ESP8266WebServer a ESP8266mDNS, takže spoustu starostí odpadne. Tyto knihovny jsou součástí balíků, který jsme instalovali podle předešlého článku.

Snad jen drobné upozornění - ve stávajícím prostředí Arduina máte jistě knohovnu OneWire - tu bude potřeba přepsat nově dodanou knihovnou, která je rovněž součásti implementačního balíku, jinak kompilér nebude znát OneWire proNodeMCU. Stačí přepsat soubory .h a .cpp v tomto případě.

Pojďme rozebrat jednotlivé pasáže.


Nejprve provedeme základní definice a nalinkování potřebných knihoven.


#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>
#include <OneWire.h> 
#include <DallasTemperature.h>

//pro teploměr
#define ONE_WIRE_BUS D4
#define TEMPERATURE_PRECISION 9 

OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
DeviceAddress insideThermometer, outsideThermometer;
float teplota;
String termOUT;
String termIN;


#define SCKLED 5


Zde zadejte SSID a heslo ke svému WiFi routeru

const char *ssid = "SSID";
const char *password = "*************";
MDNSResponder mdns;

ESP8266WebServer server(80);
const int led = 13;

Funkce pro zobrazení stránky HTML na ESP8266. Jedná se vlastně o vytištění HTML kódu na serverový pool ESP8266. Data pro HTML stránku lze buď natvrdo nakódovat přímo ve sketchi nebo vymyslet jiný způsob, jak ji do serveru vytisknout - načtením z SD karty, případně externího souboru.


//pro server
void handleRoot()
{
	digitalWrite(SCKLED, 1);
	char temp[450];
	int sec = millis() / 1000;
	int min = sec / 60;
	int hr = min / 60;
	uint8 index = termOUT.indexOf('.');
	int restOUT = termOUT.substring(index+1).toInt();
	int temperatureOUT = termOUT.toInt();
	index = termIN.indexOf('.');
	int restIN = termIN.substring(index + 1).toInt();
	int temperatureIN = termIN.toInt();


	snprintf(temp, 450,

		"<html>\
  <head>\
    <meta http-equiv='refresh' content='5'/>\
    <title>ESP8266 Demo</title>\
    <style>\
      body { background-color: #cccccc; font-family: Arial, Helvetica, Sans-Serif; Color: #000088; }\
    </style>\
  </head>\
  <body>\
    <h1>Teplota v Kuncicich pod Ondrejnikem</h1>\
    <p>Uptime: %02d:%02d:%02d</p>\
	<p>Teplota venku: %02d.%01d&deg;C</p>\
	<p>Teplota doma: %02d.%01d&deg;C</p>\
  </body>\
</html>",

hr, min % 60, sec % 60, temperatureOUT,restOUT,temperatureIN,restIN
);
	server.send(200, "text/html", temp);
	digitalWrite(led, 0);
}

void handleNotFound() {
	digitalWrite(led, 1);
	String message = "File Not Found\n\n";
	message += "URI: ";
	message += server.uri();
	message += "\nMethod: ";
	message += (server.method() == HTTP_GET) ? "GET" : "POST";
	message += "\nArguments: ";
	message += server.args();
	message += "\n";

	for (uint8_t i = 0; i < server.args(); i++) {
		message += " " + server.argName(i) + ": " + server.arg(i) + "\n";
	}

	server.send(404, "text/plain", message);
	digitalWrite(led, 0);
}

Provedeme nějaké úvodní nastvovačky - LEDka na modulu ESP8266 nám bude později indikovat chod sketche, aktivujeme sériový port na rychlosti 9600 b/s, pokusíme se připojit na WiFi router s patřičným nastavením viz. výše, vypíšeme IP adresu, kterou jsme od routeru obdrželi, abychom věděli, kam budeme sahat browserem pro zobrazení stránky. Nakonec ošéfujeme teploměry - jeden jsem označil jako vnitřní a jeden jako vnější, pokusím se je najít na sběrnici a vypsat jejich aktuální teplotu.


void setup(void) 
{
	
	pinMode(led, OUTPUT);
	pinMode(SCKLED,OUTPUT);
	digitalWrite(SCKLED,LOW);
	digitalWrite(led, 0);
	Serial.begin(9600);
	WiFi.begin(ssid, password);
	Serial.println("");

	// Wait for connection
	while (WiFi.status() != WL_CONNECTED) {
		delay(500);
		Serial.print(".");
	}

	Serial.println("");
	Serial.print("Connected to ");
	Serial.println(ssid);
	Serial.print("IP address: ");
	Serial.println(WiFi.localIP());

	if (mdns.begin("esp8266", WiFi.localIP())) {
		Serial.println("MDNS responder started");
	}

	server.on("/", handleRoot);
	server.on("/inline", []() {
		server.send(200, "text/plain", "this works as well");
	});
	server.onNotFound(handleNotFound);
	server.begin();
	Serial.println("HTTP server started");
	//digitalWrite(SCKLED, HIGH);

	//teploměry
	sensors.begin();
	Serial.println("***************************************************");
	Serial.print("Pocet teplomeru: ");
	Serial.println(sensors.getDeviceCount(), DEC);
	//zjisti adresy
	oneWire.reset_search();
	if (!oneWire.search(insideThermometer)) Serial.println("Vnitrni teplomer nenalezen!");
	if (!oneWire.search(outsideThermometer)) Serial.println("Vnejsi teplomer nenalezen!");
	Serial.print("Adresa teplomeru 1: ");
	printAddress(insideThermometer);
	Serial.println();

	Serial.print("Adresa teplomeru 2: ");
	printAddress(outsideThermometer);
	Serial.println();

	//nastav rozlišení
	sensors.setResolution(insideThermometer, TEMPERATURE_PRECISION);
	sensors.setResolution(outsideThermometer, TEMPERATURE_PRECISION);

	//načti všechny teploměry
	sensors.requestTemperatures();

	//vytiskni data na seriák
	printData(insideThermometer);
	printData(outsideThermometer);

}


Hlavní smyčka je celkem primitivní - neustále dookola sbírá teploty a updatuje webovou stránku, mezi čtením vnitřního a vnějšího teploměru pak blikne LEDkou.


void loop(void) 
{
	digitalWrite(led, LOW);
	mdns.update();
	server.handleClient();
	sensors.requestTemperatures();
	teplota = sensors.getTempC(insideThermometer);
	digitalWrite(led, HIGH);
	termOUT = String(teplota, 1);
	teplota = sensors.getTempC(outsideThermometer);
	termIN = String(teplota, 1);
	digitalWrite(led, LOW);

}

//pro teploměry
void printAddress(DeviceAddress deviceAddress)
{
	for (uint8_t i = 0; i < 8; i++)
	{
		// zero pad the address if necessary
		if (deviceAddress[i] < 16) Serial.print("0");
		Serial.print(deviceAddress[i], HEX);
	}
}


Zde ještě pár nezbytností pro obsluhu teploměrů


void printData(DeviceAddress deviceAddress)
{
	Serial.print("Adresa teplomeru ");
	printAddress(deviceAddress);
	Serial.print(":");
	printTemperature(deviceAddress);
}

void printTemperature(DeviceAddress deviceAddress)
{
	float tempC = sensors.getTempC(deviceAddress);
	Serial.print("Teplota: ");
	Serial.print(tempC);
	Serial.write(176);
	Serial.println("C");
}


Pokud se Vám povedla kompilace, zaveďte sketch do NodeMCU a otevřete sériový kanál na rychosti 9600 b/s. Pokud vše proběhlo jak mělo, pak na sériovém kanálu uvidíte vypisování symbolu tečky(.), což znamená, že se ESP8266 snaží asociovat s Vaším WiFi routerem. V momentě, kdy je asociace úspěšná se vypíše následující:

...
Connected to TESTER2
IP address: 192.168.1.111
MDNS responder started
HTTP server started
***************************************************
Pocet teplomeru: 2
Adresa teplomeru 1: 28789A68000000A1
Adresa teplomeru 2: 28F55A6800000023
Adresa teplomeru 28789A68000000A1:Teplota: 21.50°C
Adresa teplomeru 28F55A6800000023:Teplota: 22.50°C

A nyní se můžeme podívat na www stránku přes libovolný browser...

Sketch je ke stažení zde. Z veřejného internetu je webová stranka dostupná zde - pakliže zrovna nějak s tímto nelaboruji a nemám jej v jiném, než on-line režimu nebo pokud se nezmění veřejná adresa u poskytovatele.

NodeMCU je dostupné v našem e-shopu v zatím omezeném množství, od konce listopadu 2015 by mělo být již standardně dostupné a více kusů skladem. NodeMCu je beze sporu významnou komponentou pro podporu IoT a budu této desce o velikosti 48x26mm věnovat patřičnou pozornost. Podobné řešení existuje ještě ve formě ala Arduino UNO - tedy v konstrukci, která umožňuje přímo využít stávající Arduino shieldy - tedy alespoň některé.

 

 

PF

 

Přidat komentář

Zvýrazněné položky jsou povinné.

Přehled komentářů

  1. error: 'printAddress' was not declared in this scope (garf, 11.12.2015 20:37:49) Odpovědět

    Veľmi pekný návod, mám však problém, pri kompilácií mi vyskočia hlášky:

    NodeMCU_DS18B20:134: error: 'printAddress' was not declared in this scope

    printAddress(insideThermometer);

    Podobné ešte na riadku 149 a 185. Vie mi niekto poradiť. Ďakujem.

  2. arduino ide 1.6.6 (garf, 11.12.2015 23:11:39) Odpovědět

    Hore uvedený problém sa týka len ide 1.6.6 po inštalácií staršej verzie 1.6.5 kompilácia prebehne bez chyby.

    Admin:
    Trochu jsem to podrobil analýze a vypadá to takto - není to ani tak závislé na verzi Arduino IDE, ale objevil jsem takový zvláštní jev - podotýkám používám pro vývoj Visual Studio for Comunities 2015 a plugin VisualMicro - tak tedy, samotné Arduino IDE mi v obou verzích kompilovalo OK, jakmile jsem totéž zkusil ve VS, pak jsem obdržel hlášku, kterou popisujete. Vzal jsem tedy veškeré funkce, které byly napsány za hlavní smyčkou loop() a pouze je přemístil před setup(). Zjevně je někde chyba v kopiléru, resp. Visual micro pluginu. Jakmile se toto přemístění udělalo, pak se již sketch kompiluje bez chyby.

  3. esp (Ivan, 21.2.2016 10:03:56) Odpovědět

    Perfektné. Mám ale otázku: Ako môžem dosiahnúť to, aby bola stránka dostupná z verejného internetu, teda to čo máte v predposlednom odstavci? Vopred ďakujem za odpoveď

    Admin:
    Dobrý den,
    Musíte mít veřejnou adresu od Vašeho poskytovatele a pak si patřičným způsobem nastavit forward portu ve Vašem routeru. Protože routerů existuje mnoho, pak univerzální postup nelze popsat, princip ano - port forward a povolit si ho také na firewallu, pokud Váš router firewall má a máte ho zapnutý. Pak z vneku napíšete veřejnou IP adresu:portxy a ten portxy budete mít směrován na vnitřní adresu, kterou Vám dhcp přidělilo pro NodeMCU. Směruji většinou portxy na port 80, tam defaultně běží vnitřní web ESPčka.

    PF

  4. Data a napajeni (Michal, 1.3.2016 13:49:57) Odpovědět

    Dobrý den,
    poběží to i při napajení tužkovými bateriemi vydrží to nejakou slušnou dobu?

    Admin:
    Dobrý den!
    Ano, pokud budete slušně zacházet se spotřebou - tedy deep sleep, vzbudit, změřit, poslat data, pak pojedete na lithiovku 3V/3000mAh (CR123a) cca půl roku. Ale chce to fakt hoooodně šetřit a trochu si nastudovat Low Power záležitosti. Pokud ale hledáte něco, kde budete sypat data, počkejte ještě chvilku (2 měsíce max.) na LoRa nebo Sigfox sítě pro IoT, viz. mé články o IoT.

    http://www.arduinotech.cz/inpage/lpwan-lorawan-sigfox-vitejte-v-iot-107/


    PF

  5. re (Leo, 28.10.2016 9:54:46) Odpovědět

    Kdybych chtěl nastavít penou IP?
    Da se vypsat na ser.monitor sila wifi signalu?

  6. knihovna OneWire (Boss, 2.12.2016 10:42:38) Odpovědět

    Zdravím, nějak nemůžu najít tu správnou knihovnu pro OneWire.
    S tou kterou mám mi to hází error

    Zdravím,
    doporučoval bych používat ty knihovny, které se stáhnou s ESP8266 packem. Je totho celkem dost na netu, těžko říct, co funguje a co ne. Zkuste si přeinstalovat celé to ESP8266 repository.
    PF
    #define ONE_WIRE_BUS D4
    'D4' was not declared in this scope

    Děkuji za pomoc

  7. Dík (Adam, 10.1.2017 11:26:33) Odpovědět

    Funguje parádně, díky!

  8. Zapojeni s Dallas (Jiří Kačmařík, 16.1.2017 17:52:28) Odpovědět

    Dobrý den,
    podařilo se mi rozběhnout Arduino s Dallasem, dokonce s port forwarding, Mám ověřeno z Číny a Irska, že stránka teploměru je přístupná. Zjistil jsem, že je dobré dát za svou veřejnou adresu v cizině ještě číslo portu http://A.A.A.A:80, třeba můj Zyxel to potřebuje, bez toho stránku neotevře, i když v NAT má nastaveno www = č.p. 80.
    Ale na některé věci jsem krátky,
    1. letošní zima má i mínusové telploty ty se však na www nezobrazují, jedině seriový monitor napsal -0.50 ale na www je 00.0°C přitom venku je -3. Je to Dallasem nebo knihovnou? Oba Dallasy byli venku a svorně ukazovali na www 00.0
    2. Zakomentoval jsem všechny blikaci místa ř. 156, 161, 165, 122
    //pinMode(led, OUTPUT);
    //pinMode(SCKLED,OUTPUT);
    //digitalWrite(SCKLED,LOW);
    //digitalWrite(led, 0);
    //digitalWrite(led, HIGH);
    //digitalWrite(SCKLED, HIGH);

    a stejně Arduino vesele bliká dále. Frekvence blikání je otravná a powerbanka nevydrží ani den.
    Máte někdo s tím zkušenosti?

  9. Zapojeni s Dallas 2 (Jiří Kačmařík, 16.1.2017 18:54:07) Odpovědět

    Asi jsem na to přišel
    dal jssem Dallas na port D1 podle
    https://github.com/RuiSantosdotme/Random-Nerd-Tutorials/blob/master/Projects/DS18B20__ESP8266_web_server.ino
    opravil řádek 9
    #define ONE_WIRE_BUS D1
    a přestalo to blikat a měří i pod nulou
    ----------------------------------------
    Teplota venku: -1.0°C
    Teplota doma: 22.5°C
    ------------------------------------
    sice mi to moc nesedí neb venku je -1.9
    ale aspoň nějaký pokrok, možná je to jen nastaveným rozlišením Dallasu (skáče po 0.5)

  10. Zapojení s Dallas 3 (Jiří Kačmařík, 17.1.2017 14:41:02) Odpovědět

    Ještě jedna informace k TEMPERATURE_PRECISION

    // Mode Resol Conversion time
    //#define TEMPERATURE_PRECISION 9 // 9 bits 0.5°C 93.75 ms
    //#define TEMPERATURE_PRECISION 10 // 10 bits 0.25°C 187.5 m
    //#define TEMPERATURE_PRECISION 11 // 11 bits 0.125°C 375 ms
    #define TEMPERATURE_PRECISION 12 // 12 bits 0.0625°C 750 ms

  11. Chyba kompilace (Jirka, 27.1.2017 20:15:15) Odpovědět

    Dobrý den, pořád mi vyskakuje tato hláška:

    NodeMCU-DS18B20.ino:6:31: fatal error: DallasTemperature.h: No such file or directory
    compilation terminated.
    Chyba kompilace.

  12. 3 čidla? (reddy, 27.3.2017 14:00:28) Odpovědět

    snažím je tento případ pochopi zpětně, jak by vypadal kód se 3 čidly prosím?

  13. vsgkbzoydpde (gtakjd, 13.7.2018 22:13:30) Odpovědět

    <a href=http://canadian-pharmacie.com>canadian pharmacy viagra</a>
    cheapest viagra for sale uk http://canadian-pharmacie.com

  14. TikTok Hearts Generator Free HACK 2019 (Degisurry, 4.11.2018 17:28:28) Odpovědět

    UPDATED Musically Crowns Free Generator 2019
    Get from this:

    <a href="https://sketchfab.com/tiktokhearts">TikTok Free Hack 2019</a>

    Tik Tok Hack iOS
    HOW TO GET FREE Tiktok FOLLOWERS WITHOUT GETTING APPS 2019
    Tik Tok Fans Generator iOS Android
    Tik Tok Hack 2018

  15. incontri gay caltagirone (Derekirott, 3.4.2019 3:26:48) Odpovědět

    incontri gay anagni <a href="http://jmzj.photographybyreginamarie.com/lgbt-chicago-dating.html">Lgbt chicago dating</a> incontri gay a castellanza
    bakeca incontri gay vercelli <a herf="http://audiovisualesyantenasrpena.es/trabajo/191/irc-gay-vigo.html">gais vigo</a> bakeka incontri gay treviso
    bacheca incontri gay ionica <a href="http://jdbk.imobilesofts.com/west-university-singles-dating-houston.html">West university singles dating houston</a> incontri veneto gay
    chat incontri gay <a href="http://duob.francesjaye.com/san-antonio-texas-dating.html">San antonio texas dating</a> sito di incontri gay gratis
    incontri gay grottaglie <a herf="http://restart-and-go.com/sexo/contactos-gays-fuenlabrada-en-palencia/maduras-salamanca.html">maduras salamanca</a> bacheca incontri gay macerata
    bakeca incontri latina gay <a herf="http://restart-and-go.com/sexo/2/trabajo-desde-casa-ensobrado-de-cartas.html">ensobrado desde casa madrid</a> incontri gay moncalieri
    incontri gay toscana <a herf="http://restart-and-go.com/sexo/contactos-gays-cruising-en-pontevedra/chat-gay-badajoz.html">chueca_extremadura</a> bakeca incontri asti gay
    incontri gay belluno <a herf="http://audiovisualesyantenasrpena.es/trabajo/40/traductor-euskera-castellano.html">traductor euskera espaГ±ol gobierno vasco</a> bacheca incontri gay barletta
    gay incontri milano <a herf="http://zopzlowtarnow.pl/trabajo/323/pasion-gay-toledo.html">milanuncios pasion toledo</a> incontri gay a monza

  16. luoghi di incontri gay a milano (Derekirott, 3.4.2019 9:48:46) Odpovědět

    bakeka incontri gay reggio emilia <a href="http://ew.dustinklein.com/sugar-dating-san-francisco.html">Sugar dating san francisco</a> incontri gay cassino
    bakeca incontri gay savona <a href="http://aev.bouncehouseplano.com/the-dating-company-dallas.html">The dating company dallas</a> incontri gay urbino
    punto incontri gay pescara <a herf="http://zopzlowtarnow.pl/trabajo/contactos-gays-leganes-en-lugo/vibbo-las-palmas.html">vibbo empleo madrid</a> siti gay incontri
    incontri gay a reggio <a herf="http://restart-and-go.com/sexo/contactos-gays-chaperos-en-soria/follar-gratis-granada.html">follar gratis granada</a> bakeca incontri brescia gay
    incontri gay rovereto <a herf="http://restart-and-go.com/sexo/contactos-gays-fuenlabrada-en-palencia/ponferrada-gay.html">milanuncios empleo ponferrada</a> luoghi incontri gay a roma
    incontri sesso gay torino <a herf="http://restart-and-go.com/sexo/contactos-gays-arabe-en-toledo/milanuncios-gay-vilafranca.html">contactos en vilafranca del penedes</a> sito gay per incontri
    incontri gay a vibo valentia <a href="http://zp.francesjaye.com/desi-girl-dating-in-dallas.html">Desi girl dating in dallas</a> ferrara incontri gay
    incontri gay castelfranco veneto <a herf="http://zopzlowtarnow.pl/trabajo/5/foro-gay-madrid-ahora.html">www.gaymadridsexoahora.com</a> incontri gay minorca
    bacheca incontri gay varese <a href="http://mshk.klapedu.com/backpage-women-dating-chicago.html">Backpage women dating chicago</a> incontri gay parma

  17. incontri gay roam (Derekirott, 3.4.2019 16:04:13) Odpovědět

    incontri gay x <a herf="http://restart-and-go.com/sexo/contactos-gays-chaperos-en-soria/maduras-ourense.html">maduras en ourense</a> incontri gay valdarno
    bakeka incontri gay <a href="http://bd.klapedu.com/dating-in-leesville-la.html">Dating in leesville la</a> incontri gay a mantova
    bakeca incontri gay piacenza <a herf="http://zopzlowtarnow.pl/trabajo/contactos-gays-masaje-en-alava/maduras-en-huelva.html">milanuncios gay huelva</a> incontri gay a perugia
    incontri gay lucca <a herf="http://restart-and-go.com/sexo/contactos-gays-villalba-en-barcelona/putas-whatsapp.html">putas con whatsapp</a> incontri gay a menfi
    bacheca incontri lecce gay <a herf="http://zopzlowtarnow.pl/trabajo/contactos-gays-leganes-en-lugo/sauna-gay-san-sebastian.html">venconmen</a> backeca incontri gay
    incontri gay milani <a herf="http://zopzlowtarnow.pl/trabajo">milanuncios tenerife empleo</a> annunci gay per incontri
    bacheca incontri gay bari <a href="http://qvot.glitterandbliss.com/california-legal-dating-age.html">California legal dating age</a> incontri tra ragazzi gay
    bacheca incontri gay bari <a herf="http://restart-and-go.com/sexo/contactos-gays-fuenlabrada-en-palencia/chat-gay-zaragoza.html">chat terra nudismo</a> incontri gay a marsala
    bacheca incontri lecce gay <a href="http://zkcz.gingerbread-house-patterns.com/">Online dating for professionals los angeles ca</a> incontri di giovani gay

  18. bacheca incontri gay ragusa (Derekirott, 3.4.2019 22:13:07) Odpovědět

    incontri uomini maturi gay <a herf="http://zopzlowtarnow.pl/trabajo/5/ofertas-de-empleo-zaragoza.html">cornerjob malaga</a> luoghi incontri gay liguria
    incontri isernia gay <a href="http://uz.gingerbread-house-patterns.com/richard-burger-pomona-ny-dating-show.html">Richard burger pomona ny dating show</a> incontri gay reggio cal
    incontri gay novara e prov <a herf="http://zopzlowtarnow.pl/trabajo">sergi enrich gay</a> bacheka incontri palermo gay
    terni incontri gay <a herf="http://restart-and-go.com/sexo/contactos-gays-sierra-en-santa-cruz-de-tenerife/pol-badia-gay.html">pol badia y maestro</a> incontri gay stresa
    gay incontri palermo <a href="http://vcq.klapedu.com/big-tits-dating-chicago.html">Big tits dating chicago</a> incontri gay pinerolo
    bacheka incontri gay verona <a href="http://hj.francesjaye.com/transgender-speed-dating-san-francisco.html">Transgender speed dating san francisco</a> www incontri gay palermo
    siti incontri gay maturi <a href="http://duob.francesjaye.com/asian-dating-in-houston-tx.html">Asian dating in houston tx</a> incontri gay termini imerese
    bacheca incontri gay cesena <a herf="http://zopzlowtarnow.pl/trabajo/323/pelis-gay.html">peliculas gay online estrenos</a> incontri gay viterbo
    gay incontri matera <a herf="http://restart-and-go.com/sexo/contactos-gays-chaperos-en-soria/contactos-gay-zamora.html">cruising zamora</a> siti d incontri gay


TOP produkty

Kontakt

Ing. Petr Foltýn
Kunčice pod Ondřejníkem 814, 73913
TOPlist