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
Tohle by asi fungovalo, kdybych měl přístup k úpravám kódu této webové stránky s daty, ale to nemám.…
sklipky 29.11.2019 07:10
sklipky
To právě není potřeba - mít přístup ke zdrojovýmu kódu stránky. Říká se tomu scrapování dat. Když ví… nový
Pavel 29.11.2019 12:50
Pavel
Nemyslim si, ze som retardovany, ale skript co si spravil by som asi nespravil ani po usilovnom goog… nový
fleg 29.11.2019 12:29
fleg
Podle mě to tvrzení není od věci a pořád si myslím, že je pravdivé. Na to, aby někdo sesmolil takový… nový
kacikac 29.11.2019 16:18
kacikac
Ve které části vesmíru je běžný, že obyčejnej uživatel zná Document Object Model vytvořenej prohlíže… nový
Pavel 29.11.2019 16:28
Pavel
Já nepsal obyčejný uživatel, já psal rozumný uživatel. A řešíme tu tazatele, ten psal, že má zkušeno… nový
kacikac 29.11.2019 16:42
kacikac
S tebou fakt musí být terno diskutovat. OK, uznávám, psals "rozumný uživatel". Slyšíme tam oba slov… nový
Pavel 29.11.2019 16:46
Pavel
Jako já netuším co na tom nechápeš. Máš třeba uživatele prohlížeče. Někdo jej umí jen zapnout, klikn… nový
kacikac 29.11.2019 16:57
kacikac
Evidentně rozumím tomu co říkáš; evidentně nerozumím tomu, proč si myslíš to, co tady píšeš. Někdo… nový
Pavel 29.11.2019 17:07
Pavel
Když o tom nic neví? Já někde psal, že o tom nemá nic vědět? Psal jsem "A za pár minut je i neprogra… nový
kacikac 29.11.2019 17:16
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… nový
sklipky 29.11.2019 12:41
sklipky
místo tepelne_cerpadlo.htm zadám mojí adresu Jasnačka, dal bys tam URL adresu té stránky, kterou no… nový
Pavel 29.11.2019 12:47
Pavel
V adresním řádku je .xml Data jsou totiž poskytovány PLCčkem přes nějakou externí službu TecoRoute.… nový
sklipky 29.11.2019 13:00
sklipky
A bavíme se oba o tom stejným? V úvodním příspěvku máš obrázek, předpokládal jsem, že je to z web. p… nový
Pavel 29.11.2019 13:17
Pavel
Bavíme se o tom samém. K tomu .XML přistupuji totiž pomocí internetového prohlížeče. Myslel jsem, že… nový
sklipky 29.11.2019 13:34
sklipky
Ten aktuální náhled, to cos poslal teď, je klasickej HTML kód, čili webová stránka, nikoli XML soubo… nový
Pavel 29.11.2019 13:47
Pavel
S XML soubory v práci taky pracuju, takže vím, že vypadají jinak, ale proč je na konci adresy v adre… nový
sklipky 29.11.2019 13:56
sklipky
Ano, místo relativně uloženého souboru to může být webová adresa: https://www.php.net/manual/en/func… nový
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.

Podle mě to tvrzení není od věci a pořád si myslím, že je pravdivé.
Na to, aby někdo sesmolil takový kód je ale potřeba to, co jsem tam uvedl. Například vědět to, co by měl vědět každý rozumný uživatele, tedy například to, že existuje něco jako DOM. A další věc mě napadla, třeba vědět, že v HTML kódu se jednoznačně element identifikuje pomocí id, protože stejné id na webové stránce být nemůže (aspoň podle specifikace) a v řešené webové stránce se mají řešit dva elementy, které jsou právě identifikovatelné podle id. Toto by měl vědět taky každý rozumný uživatel s tím, že toto využívá například ve vytvářených pravidlech v blokovači reklam ve webovém prohlížeči.
No a pak to je jen o tom najít třeba v php funkce, které pracují s DOM, které načtou webovou stránku a které pracují s databází a výsledný kód splácat z kódu nalezeného na netu.

Já nepsal obyčejný uživatel, já psal rozumný uživatel.
A řešíme tu tazatele, ten psal, že má zkušenosti s C a Arduinem. A komentoval jsem ledního brtníka, ten si zas umí hrát s cmd.
Takže podle toho, co psali, předpokládám, že takoví lidé by měli spadat do skupiny rozumní uživatelé.

Jako já netuším co na tom nechápeš. Máš třeba uživatele prohlížeče. Někdo jej umí jen zapnout, kliknout na ikonku youtube a přehrávat videa, což je uživatel. Někdo umí dokonce si nainstalovat do prohlížeče blokovač reklam. Někdo další do blokovače reklam dovede naklikávat pravidla. Někdo další dovede do blokovače reklam i vytvářet pravidla. Někdo další ví, že prohlížeč má nástroje na F12. Prostě jsou různé úroveně uživatele.
A když jsme u toho, napsal jsem to zjednodušeně, OK, když nevyhovuje to, že by rozumný uživatel měl vědět, že existuje něco jako DOM, tak si to nahraď tím, že by měl uměl googlit, po zadání "php parse html id" druhý odkaz:
https://www.coralnodes.com/parsing-html-in-php/
a hned tam máš popsanou práci s DOM :-) takže i pokud by rozumný uživatel nebyl rozumný nebo i kdyby byl rozumný a nevěděl že existuje DOM, je schopen během pár vteřin se k tomu i tak dostat, tak nechápu, co řešíš :-)

Evidentně rozumím tomu co říkáš; evidentně nerozumím tomu, proč si myslíš to, co tady píšeš.

Někdo se zeptá na způsob zjištění hodnotu z web. stránky a dle tebe by měl začít gůglit "php parse html id". Když o tom nic neví?

Končím, nemám na to síly a postrádá to smysl.

Když o tom nic neví? Já někde psal, že o tom nemá nic vědět?
Psal jsem "A za pár minut je i neprogramátor schopný sesmolit"
NEPROGRAMÁTOR!
php ... je vybraný programovací jazyk
parse ... ví i neprogramátor, co je to parsování, důkaz: lední brtník: "programovat neumím, takže neřeším parsování." vídíš to slovo parsování?
html ... i neprogramátor ví (ve smyslu rozumný uživatel), co je to html
id ... i neprogramátor ví (ve smyslu rozumný uživatel), co je to id
Mimochodem na "php parse html" je první odkaz na parsování přes ty DOM funkce v php.

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?

místo tepelne_cerpadlo.htm zadám mojí adresu

Jasnačka, dal bys tam URL adresu té stránky, kterou normálně vidíš v prohlížeči v adresním řádku.

ta adresa má koncovku .xml

Opravdu? Tobě prohlížeč zobrazí XML soubor jako webovou stránku? Nepleteš se?

Asi by bylo dobrý někoho oslovit, aby ti to vyřešil.

A bavíme se oba o tom stejným? V úvodním příspěvku máš obrázek, předpokládal jsem, že je to z web. prohlížeče a tedy webová HTML stránka. A najednou říkáš, že na té adrese je soubor XML. Jedná se opravdu pořád o to samý?

Jinak získat data z XML je asi jednodušší než z HTML, pokud tedy znáš strukturu toho XML.

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