Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Program/script pro zápis hodnoty z lokální sítě do databáze

Prostřednictvím prohlížeče mám přístup k náhledu na aktuální data tepelného čerpadla. Ukazuje to i aktuální hodnotu spotřebované energie pro topení a pro ohřev vody. Nemám ale přístup k historickým datům a rád bych viděl vývoj spotřeby el. energie a proto bych rád každý den ve stanovený čas zapsal údaje o spotřebované energii.

Přikládám fotku rozhraní. Dostanu se na něj napsáním IP adresy 192.168.0.99 do adresového řádku v prohlížeči.
Prosím o radu jak nejjednodušeji ukládat tyto dvě hodnoty každý den v 24:00 do nějaké databáze. Jaký programovací jazyk použít a jakou databázi? Alespoň tato základní rozhodnutí bych potřeboval, abych pak mohl hledat tutorialy, zkoušet programovat a šel správným směrem.

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
Měl bych představu, kdyby to bylo dostupný z vnějšku. Pak se dají použít služby jako Apify nebo Impo…
Pavel 27.11.2019 17:20
Pavel
ani ne, já tímto stylem vyčítám teplotu v našem labu. programovat neumím, takže neřeším parsování. a…
lední brtník 27.11.2019 23:41
lední brtník
Čau medvěde. Podle mě v případě tohoto triviálního problému není otázka jestli někdo umí programovat…
kacikac 28.11.2019 14:23
kacikac
S PHP nemám žádné zkušenosti, ale čím více zkoumám kód, tak to vypadá, že by to mohlo fungovat. sta…
sklipky 29.11.2019 12:41
sklipky
Ano, místo relativně uloženého souboru to může být webová adresa: https://www.php.net/manual/en/func…
kacikac 29.11.2019 15:48
kacikac
Díky za odpovědi. Myslím, že z těch třech postupů připadá v úvahu ten první a třetí, o tom prostředn… nový
sklipky 02.12.2019 06:32
sklipky
Já psal jak vytvořit databázový soubor sqlite, ten ale můžeš vytvořit úplně někde jinde, než jej bud… nový
kacikac 02.12.2019 22:05
kacikac
Až budu mít draft, tak ho sem nasdílím. Bohužel/bohudík nemám každý den čas sedět u PC, protože doko… nový
sklipky 04.12.2019 10:21
sklipky
Třeba cronem, pokud na hostingu je. Pokud ne, tak externím, třeba https://cron-job.org/en/ poslední
kacikac 04.12.2019 17:12
kacikac

ani ne, já tímto stylem vyčítám teplotu v našem labu.
programovat neumím, takže neřeším parsování. ale vyčtu si jednodušší web stránku se zobrazením teploty čidla | tu filtruju na řádek obsahující řetězec s teplotou.
batkovým příkazem for /f z toho dostanu ty čísla.
jen pro efekt si je zobrazím v "ascii-art", mezi jinými výpisy v "pospuštění" to docela vynikne.

do databáze to z příkazového řádku neuložím, jedině připisovat do .csv, ať to něco zpracuje za mě.

Čau medvěde.
Podle mě v případě tohoto triviálního problému není otázka jestli někdo umí programovat nebo ne, jde o to nebýt retardovaný a chtít si potřebné info najít na netu.
To, že webová stránka má něco jako DOM ví snad každý trozumný uživatel a že na to budou v programovacím jazyku existovat funkce určitě taky a na ukládání do databáze to už je bez debat, no a pak je otázka prostě juknout na net.
A za pár minut je i neprogramátor schopný sesmolit něco jako:


<?php
$dom = new DOMDocument;
$dom->loadHTML(file_get_contents('tepelne_cerpadlo.htm'));
$hodnota1 = $dom->getElementById('INPUT15')->getAttribute('value');
$hodnota2 = $dom->getElementById('INPUT16')->getAttribute('value');
$pdo = new PDO("sqlite:tepelne_cerpadlo.db");
$pdo->query("INSERT INTO tabulka (hodnota1,hodnota2) VALUES($hodnota1,$hodnota2)");

což je přesně to, co chce tazatel.

S PHP nemám žádné zkušenosti, ale čím více zkoumám kód, tak to vypadá, že by to mohlo fungovat.

stačí změnit : $dom->loadHTML(file_get_contents('tepelne_cerpadlo.htm')); ---> místo tepelne_cerpadlo.htm zadám mojí adresu, jen tedy ta adresa má koncovku .xml, nikoliv htm

Kde se vytvoří ta sqlite databáze?

Ano, místo relativně uloženého souboru to může být webová adresa:
https://www.php.net/manual/en/function.file-get-contents.php
Ano, může mít i koncovku xml. Podle obrázku v prvním postu to byl HTML kód. Neukázal jsi celý zdrojový kód webové stránky, pokud by to byl xml kód a nefungovalo by to přes DOM, tak jde použít místo toho funkce přímo na xml. DOM by měl ale fungovat i na xml:
https://www.php.net/manual/en/class.domdocument.php
Otázka jak vytvořit databázi nebyla od tebe položena, tak jsem ji nepopisoval, teď nevím jestli chceš jen navést nebo napsat zas už přímo přesný postup, já si přesný postup nepamatuju, stejně jak u kódu, ale jsem schopný ti ho napsat, pokud budeš chtít, nemělo by to být nic složitého, myslím, že to jde minimálně 3 postupy:
- vytvořit ji v admineru pokud ti někde jede webový server s php nebo si ho prostě nahoď
- vytvořit ji php skriptem (nemusíš mít ani webový server, mělo by to jít přes php.exe)
- vytvořit ji pomocí nástroje sqlite3 (sqlite3.exe) z webu sqlite
Abych napsal konkrétní postup, potřeboval bych znát co tam bude za tabulku nebo tabulky a jakou budou mít strukturu.

Díky za odpovědi. Myslím, že z těch třech postupů připadá v úvahu ten první a třetí, o tom prostředním nemám ánung.

Webový server někde ještě budu mít z minulosti na andoře, nebo webzdarma. Tam prostě napíši web, který bude ukládat data do souboru uloženém na serveru providera této služby. Struktura souboru (databáze) by měla být :

datum, čas, spotřeba topení, spotřeba TUV,

Bude se tedy jednat o úplně prázdný web, uvidím tedy jen bílou stránku, ale na pozadí pojedou operace, které budou číst data z jiného webu a ukládat je do souboru na webu. Chápu to správně?
Nevím, jestli nebude problém, že pro přístup na stránku (XML) tepelného čerpadla je potřeba zadat jméno a heslo.

Líbí se mi i třetí možnost, použít sqlite, ale s tím nemám žádné zkušenosti, takže ta první pro mě asi vhodnější.

Já psal jak vytvořit databázový soubor sqlite, ten ale můžeš vytvořit úplně někde jinde, než jej budeš používat a tam jej prostě nakopírovat. Další možnost je, že ti ho prostě vytvořím já, jenže pokud nesvedeš ani vytvořit sqlite soubor, tak prostě nedáš ani ten zbytek a všechno bych musel udělat za tebe, přitom je to všechno celkem jednoduché jako třeba bylo vytvoření toho php skriptu, který jsem tu uvedl.
Je jedno kde budeš řešit vytvoření souboru do datábáze. Je úplně jedno kde ti pojede pak to logování. Jestli bys to dělal z venku, tak podle mě nebude problém s přihlašováním, i to se dá řešit.
Takže tabulka bude tedy asi id, timestamp, topeni, tuv
Z timestamp se dá vydolovat datum i čas. Info jak to řešit timestamp máš na netu, stačí jen googlit:
https://stackoverflow.com/questions/5516450/how-to-create-a-sqlite-timestamp-value-in-php
https://www.sqlite.org/lang_datefunc.html
https://stackoverflow.com/questions/14461851/how-to-have-an-automatic-timestamp-in-sqlite
https://www.sqlite.org/datatype3.html
id integer, timestamp buď integer nebo numeric (v těch odkazech je datetime, což je numeric), topeni a tuv je integer nebo numeric, podle toho, co se bude hodit víc.
V úvodním příspěvku jsi psal:
"abych pak mohl hledat tutorialy, zkoušet programovat a šel správným směrem"
Hledáš? Zkoušíš? No tak hledej a zkoušeš přece. Malá nápověda pro vytvoření databáze pomocí sqlite3.exe:
sqlite3.exe tepelne_cerpadlo.db < tepelne_cerpadlo.sql
kde v tom tepelne_cerpadlo.sql je jeden příkaz CREATE TABLE sestavený podle toho, co jsem psal před chvílí.

Až budu mít draft, tak ho sem nasdílím. Bohužel/bohudík nemám každý den čas sedět u PC, protože dokončuji barák, mám malé dítě a těhotnou manželku :D

Plánuju jít cestou webové stránky, ale nevím jak tam provést, aby se zalogování dat provedlo každá den v danou hodinu. Když napíši program třeba pro arduino, tak se kód pořád dokola opakuje a vše probíhá v určitých intervalech pořád dokola, nebo se tam nějaký interupt, díky kterému se akce vykoná za náhlé splnění určité podmínky. Jak ale udělat v php, že každý den v 24:00 hodin vykonej tuto akci (zapiš hodnoty do tabulky) .

Zpět do poradny Odpovědět na původní otázku Nahoru