Synology-Forum.nl
Overige software => Web Station => Topic gestart door: ercmrj op 12 januari 2017, 20:05:52
-
Ik wil eigenlijk de data van een arduino opslaan op mijn nas, daarvoor moet je vanaf je arduino de data versturen naar een php file die dat weer doorstuurt naar mysql en dan opslaat op je nas.
Nu ben ik een tutorial aan het volgen over php en dat werkt allemaal prima, maar daarna loop ik vast.
Het schijnt dat je de php-file ergens in een of andere map /var/www/html/ moet plaatsen en hem dan via je webbrowser moet openen, maar dat lukt niet.
Ik heb al verschillende tutorials doorlopen maar kom er niet meer uit. Ik werk met ubuntu en heb al via de tutorials vanalles geinstalleerd, LAMP, apache2, mysql en dan moet je het php bestand in de map /var/www/html/ plaatsen en dan bv. http://your_server_IP_address/info.php invullen in je browser, maar kan het juiste IP-adress niet vinden en dan werkt de rest ook niet.
-
php bestand in de map /var/www/html/ plaatsen
Ik ben hier geen deskundige, maar op de nas zal alles in de share "web" geplaatst moeten worden. Vanaf de commandline dus /volume1/web/www/html/
-
en wat moet je daarna in je browser intypen?
-
/var/www/html/
is normaal je hoofdmap van je web site. Dus als je bijvoorbeeld http://mijndomain.nl staat alles in de html map.
Dus het is jou geval http://je-nas-ip-lokaal/info.php dus bijvoorbeeld http://192.168.1.5/info.php
Het ip adres van je nas is het zelfde adres als hoe jij de interface benaderd van synology. http://192.168.1.5:5000 alleen zonder die 5000 dus.
Of snap ik je vraag niet?
-
Eindelijk dankje wel. Nu zie ik wat er mis is.
Er is iets mis met dropbox. Die zou altijd moeten synchroniseren maar dat doet ie blijkbaar niet goed dus ik zette de file in dropbox wat ik niet in de gaten had en deze synchroniseerde niet met de map van de synolocy nas.
Nu werkt het wel, als ik hem rechtstreeks in de nas zet.
-
ter interesse wat doe zoal met je arduino? Wellicht is mqtt iets voor je?
-
Ik had mqtt toevallig ook laatst gezien, en dat leek me ook wel makkelijker ja.
Ik heb met wat electronica voor elkaar gekregen om met een laserllampje en een ldr weerstand een oude gasmeter af te lezen en nu wil ik die data online zetten zodat ik te alle tijden kan zien hoeveel gas ik verbruik, misschien in de toekomst hetzelfde doen met de electrische meter.
-
Een kwh meter laat zich vaak via rs422 of rs485 modbus uitlezen.
Mqtt is een fijn protocol, en met een beetje zoeken vindt je een kant en klare open source c implementatie.
Tevens is het tamelijk simpel te begrijpen en vrij belegbaar, waardoor je het snel kunt inzetten.
Overigens zou ik voor het uitlezen van dit soort zaken geen arduino microcontroller nemen, maar voor een raspberry pi kiezen. Dit omdat de raspberry meer horsepower heeft en ook als plc runtime in te zetten is.
Ikzelf heb met een raspberry pi3 mijn cv ketel uitgelezen via een modbus/opentherm gateway. Vanuit de raspberry kan je dan de data naar een willekeurige machine sturen of localhost in een databaseje zetten ter analyse. Ideaal met integratie van domotics ;-)
-
Ik heb nu wat MQTT youtube filmpjes bekeken en ben benieuwd of het mij ook lukt. Ziet er in eerste instantie nog niet zo makkelijk uit.
Waar ik moeite mee heb zijn de IP-adressen, wachtwoorden en gebruikersnamen die je moet gebruiken. Dat is ook moeilijk uit te leggen in die filmpjes omdat dat die bij iedereen anders zijn.
-
Als je een MQTT open source C library weet te vinden hoef je je vanaf dat moment alleen druk te maken hoe je een client kan schrijven en hoe je die client laat verbinden met je NAS. Meestal zijn er bij zulke libraries ook diverse implementatie voorbeelden te vinden.
Op Synology is al MQTT broker package te installeren. Het vullen van de berichten mag met alles wat jij wilt, platte text, XML of JSON of iets wat jij makkelijk vindt. Laat je client met de server verbinden et viola. :thumbup:
Maar eh, wat doe je nu precies met die arduino?
-
Met de arduino lees ik de meterstand en nu wil ik die gelezen waarde opslaan en weergeven op een website die ik dan overal kan zien.
Ben nu zover dat het me lukt om de data van arduino naar een php script te sturen maar nu stuurt hij de data terug naar de arduino.
Als ik in het php script een paar regels zet om de waarde in een bestand op te slaan werkt dit niet in de directory www van de nas, maar het werkt wel als ik hetzelfde bestand in de directory zet van mijn locale server, dus als ik dan localhost/***.php?waarde=1 intyp in de browser, slaat hij de waarde wel op op de harde-schijf.
Iemand enig idee waarom dit niet werkt op de nas?
-
Een kwestie van de juiste rechten/directories meegeven aan de schrijfactie. Geef je gelezen waarde filebased door?
Kan je niet beter een file op de NAS aanmaken en openen en als csv formaat wegschrijven? Dus uitleestijdstip en uitleeswaarde per regel meegeven. Dan kan je de arduino eenmalig die file laten aanmaken en met een append commando regels toevoegen. Gelijktijdige proces acces kan met tail, dus kan je php Script de file benaderen en de gegevens eruit weergeven, zij het in een x-y plot.
-
Is het zo simpel?
Ik zal eens zoeken of ik daar iets over kan vinden
-
Ja dit is tameljk simpel hoor. Mooier zou zijn om een database te vullen. Kijk eens naar Domoticz daarvoor. Overigens dergelijke proces data kan je het beste NIET in een relationele database zetten. Deze zijn niet geoptimaliseerd voor process data, maar, de naam zegt het al, relationele data zoals NAW gegevens etc. Dus Mysql en acces etc zijn inherent niet bijster geschikt voor dit soort reeksen.
-
Ja, dat weet ik, maar ik wil eerst dit snappen.
Maar bedankt voor de tip
-
Als ik naar de map www ga van de synology en geef bij eigenschappen de rechten aan http om te schrijven dan kan ik de arduino data laten wegschrijven naar de map www.
Is dit niet gevaarlijk want http heeft standaard rechten om alleen te lezen.
-
Je moet ook alleen rechten geven op de mappen die nodig hebben. Dit moet je per pakket uitzoeken. Maar op de http map moet je dit inderdaad dus niet doen.
-
In de arduino sketch staan deze commando's om de variabele naar de NAS te sturen.
host = "192.168.1.105" // adres van de NAS
String url = "/";
url += "add.php";
url += "?data_sent=";
url += value; //value is de waarde die de arduino stuurt
client.print(
String( "GET ") + url + " HTTP/1.1\r\n" +
"Host: " + host + "\r\n" +
"Connection: close\r\n\r\n");
Kun je dat op deze manier dan naar een andere directory sturen dan www? En die directory zal dan toch ook http rechten moeten krijgen om te kunnen schrijven, dan heb je toch hetzelfde probleem.
-
Ik heb ondertussen een manier gevonden om de data van de arduino op te slaan op de nas in de map die je van buiten kan benaderen.
Als ik de data naar een locale server stuur en ik schrijf een scriptje met python dat constant kijkt of de betreffende file gewijzigd is en dan copiert naar de map op de nas.
Dan kan ik de data wel van buiten bekijken en hoef ik geen http schrijfrechten aan de map op de nas geven.
Is dit wel veilig op deze manier?
-
Tsja, zolang deze toepassing niet "in the wild" gebruikt wordt kan het wel aan.
Het gaat immers om php te leren nietwaar?