1 Naposledy upravil: aleho (2017-03-12 18:01:37)

Téma: [vyřešeno] Zápis do sdílené proměnné přes index

Dobrý den,
šlo by ve firmwaru doplnit možnost přistupovat ke sdílené proměnné přes index (4000+) nejen pro čtení ale i pro zápis, protože nyní jsou pouze read-only?

Rád bych použil sdílené proměnné (Sxx) nejen ve směru dovnitř ale hlavně i ven, tak aby se daly lehce číst GET requestem na SDS-BIG. V původním SDS -MACRO v SDS-C mi to umožňovala ram[] proměnná, a teď ta možnost není abych mohl napsat kód stejně čistě a navenek sdilené hodnoty moci upravovat ne jednotlivě ale přes index.

2

Re: [vyřešeno] Zápis do sdílené proměnné přes index

Ano, indexy [4000] až [4400] jsou jsou k dispozici pro umožnění hromadného zpracování příchozích změn, protože se uživatelům "nechtělo" přistupovat k proměnným přímo, tak jak to je původně navrženo. Tak jsme vyšli vstříc.

Pro zápis "ven" např.

U12 = 1000; // write 1000 to shared-variable U12
Pochlubte se - popište jak využíváte své zařízení SDS zde ! Můžete si bezplatně přidat svou reklamu !

3

Re: [vyřešeno] Zápis do sdílené proměnné přes index

Můj program se chová dynamicky a používá proměnný počet sdílených proměnných, a to jak na vstupu tak na výstupu. Samozrejmě, že můžu udělat funkci která bude mít jeden obrovský switch s 64 case, ale je to oproti SDS-C ze kterého program přepisuji cesta zpět. Přístup k zápisu přes index by to zjednodušil. Byť i tak je tam omezení, že musím deklarativně všechny sdílené proměnné vyjmenovat aby se daly používat, to by taky mohlo být nějak dynamicky z programu definovatelné.
Každopádně původní sys[] a ram[] z SDS-C byly na použití proti novému přístupu zlaté. A nebýt omezení počtu podprogramů v původním SDS-C, které nám znemožnili napsat čistější kód, tak bychom nebyli nuceni nic přepisovat.

4

Re: [vyřešeno] Zápis do sdílené proměnné přes index

Viz http://wiki.merenienergie.cz/index.php/FULL-C_sharing , možnosti samozřejmě jsou.

Pochlubte se - popište jak využíváte své zařízení SDS zde ! Můžete si bezplatně přidat svou reklamu !

5

Re: [vyřešeno] Zápis do sdílené proměnné přes index

Snažím se provést zápis do sdílené proměnné z php skriptu. Modifikoval jsem skript pro staré sds . Pokud mám povolen zápis bez přihlášení ( u 150 = 0) tak vše funguje, ale jakmile změním na jinou hodnotu, tedy zápis pouze pro přihlášené tak nejsem schopen zapsat a webový prohlížeč mi vrací hlášení 404 soubor nenalezen.
tady je php skript ( skutečná adresa je přepsána):

$url ="http://xxxxxxxx.dyndns.org:/sv?U00=5544 ";
$port="36";
$username="admin";
$password="test";
$ch = curl_init();
//echo "url = " . $url . "<br><br>";
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
curl_setopt($ch, CURLOPT_PROTOCOLS, CURLPROTO_HTTP); 
curl_setopt($ch, CURLOPT_PORT, $port);
curl_setopt($ch, CURLOPT_TIMEOUT, 7);
//curl_setopt($ch, CURLOPT_FILE, $fh);
$success = curl_exec($ch);
//if ( !$success ) print "<br><B>Error!!</b><br>";
$output = curl_exec($ch);
$info = curl_getinfo($ch);
curl_exec($ch);
curl_close($ch);

6

Re: [vyřešeno] Zápis do sdílené proměnné přes index

Přihlášení je potřeba provést samostatným curl dotazem, pak provést "sv" (nebo cokoliv jiného co je potřeba), a pak se posledním curl dotazem odhlásit.
Pro přihlášení / odhlášení se nepoužívá httpauth; podívejte se na komunikaci jak to specificky dělá webové rozhraní sds, a to právě je potřeba zreplikovat.

Pochlubte se - popište jak využíváte své zařízení SDS zde ! Můžete si bezplatně přidat svou reklamu !