rasProject_01 / weSweetHome  R. 240
process control       /     RasPi software         by   weinert-automation
Loading...
Searching...
No Matches
meteRead.c File Reference

A CGI program to co-operate with hometerControl. More...

#include "sysBasic.h"
#include "sweetHome.h"
#include "weCGIajax.h"
#include "weShareMem.h"

Functions

int main (int argc, char **argv)
 The program. More...
 

Variables

char const prgNamPure []
 The pure program name. More...
 
char const prgSVNdat []
 The complete SVN date string. More...
 
char const prgSVNrev []
 The complete SVN revision string. More...
 

Detailed Description

A CGI program to co-operate with hometerControl.

Copyright (c) 2018 - 2024 Albrecht Weinert
weinert-automation.de a-weinert.de
/ / /\
/ /___ / \ |
\ /____\ /____\ | _|__
\ /\ / \ / \| |
\/ \/ \__/ \__/|_

Revision history

Rev. 257 14.07.2024
Rev. 76+ 06.12.2017 : new; derived from hometersConsol.c
Rev. 85 21.12.2017 : more and flexible commands
Rev. 115 22.02.2018 : larger data structures
Rev. 125 23.03.2018 : power factor (all meters and phases) added
Rev. 132 28.04.2018 : batModU added
Rev. 149 17.06.2010 : pps value added
Rev. 165 12.07.2018 : temperature & batt values, pps power
Rev. 166 14.07.2018 : more pps commands, more help texts (title) in JSON
Rev. 170 24.07.2018 : real temperature names; Umlauts got working
Rev. 187 14.10.2018 : JSON sequences: P in front, T resorted
Rev. 209 15.07.2019 : minor improvements (docu)
Rev. 220 09.11.2019 : Growatt values added to valFilVal_t
Rev. 251 11.07.2023 : update for 2nd heater element and prep. car load
Rev. 257 13.07.2024 : surplus power this and html update (title's UTF8 problems)
Smart meters' and other process values.
Definition: sweetHome.h:418

Client functions

This program gets values from hometersControl via shared memory synchronised with a set of semaphores:
sem # 0: exclusive lock of shared memory (for the shortest time possible !)
sem # 1: signal from from hometersControl to other program
sem # 2: signal from from hometersControl to this program (meteRead)

Under the same semaphore (#0) lock it may set command codes in the shared memory according to the query string. A query will usually be part of the request when buttons were pressed in the web page.

GCI server functions

This program's output (i.e. AJAX answer) are physical readings, status values and times as JSON object, leaving selection of values and their display to the HTML page respectively its Javascript code.

In the JSON object's text delivered all numerical values (int, float) are put as strings in appropriate form and precision. The rationale is to avoid auto parsing of data, all or most of which will probably be formatted (back to text) to be put in the web page. And, alas, formatting is not Javascript's strong point, while parsing a string to a number would not be a problem, if a number is needed.

GCI back-link – command by query

This program evaluates a query string parameter command=command. command (2nd) = startPump | stopPump etc. see sweetHome.h and cmdLookUp.

Library usage

The program uses the library (lib...): pthread

Build the program

cross-compile by:

make PROGRAM=meteRead TARGET=meterPi clean all

program by:

make PROGRAM=meteRead TARGET=meterPi FTPuser=pi:piSecret progapp

due to bugs in c make use winscp directly by entering the command displayed

load the matching html page by:

make PROGRAM=meteReadHTML TARGET=meterPi FTPuser=pi:piSecret progapp

due to bugs in c make use winscp directly by entering the command displayed:

winscp.com /script=progTransWin /parameter pi:pisecret 1.1.1.8 var/www www_meterPi\meteRead.html

for the css use:

winscp.com /script=progTransWin /parameter pi:piSecret 1.1.1.8 var/www/include www\include\weEmb.css

Function Documentation

◆ main()

int main ( int  argc,
char **  argv 
)

The program.

Run by (Apache) web server as (cgi) script with optional (query string) parameters.

Variable Documentation

◆ prgNamPure

char const prgNamPure[]

The pure program name.

To be provided in the application's / program's source.

See also
progNam() progNamB()

◆ prgSVNrev

char const prgSVNrev[]

The complete SVN revision string.

To be provided in the application's / program's source.

See also
progRev()

◆ prgSVNdat

char const prgSVNdat[]

The complete SVN date string.

To be provided in the application's / program's source.

See also
progDat()